《HTML5游戏开发》系列文章的目的有:一、以最小的成本去入门egret小项目开发,官方的教程一直都是面向中重型;二、egret可以非常轻量;三、egret相比PIXI.js和spritejs文档更成熟、友好;四、学习从0打造高效的开发工作流。
- HTML5游戏开发(一):3分钟创建一个hello world
- HTML5游戏开发(二):使用TypeScript编写代码
- HTML5游戏开发(三):使用webpack构建TypeScript应用
- HTML5游戏开发(四):飞机大战之显示场景和元素
- HTML5游戏开发(五):飞机大战之让所有元素动起来
本节我们将会:
- 使用webpack来构建基于TypeScript的应用。
- 实现基于webpack的实时重新加载(live reloading),以提升我们的效率。
- 改造项目的结构,以适应逻辑更复杂的应用。
项目示例源码: github.com/wildfirecod…
在线演示地址:wildfirecode.com/egret-webpa…
改造项目结构和TypeScript配置
在根目录创建src文件夹来存放用户代码以及defs文件夹来存放TypeScript声明文件。
mkdir src && mkdir defs
之后把main.ts文件移入src,把defs.d.ts移入defs。
由于我们修改了项目结构,我们需要更改TypeScript配置。在tsconfig.json中添加与compilerOptions同级的属性include。我们的配置文件内容将会变成这样:
{
"compilerOptions": {
"module": "es6",
"target": "es5"
},
"include": [
"src",
"defs"
]
}
现在除了src&defs,其他的代码都不会被编译器编译进去。
引入webpack并实现实时重新加载(live reloading)
让我们来使用webpack来构建TypeScript项目。 我们先安装webpack以及TypeScript相关依赖。
npm install --save-dev webpack webpack-cli webpack-dev-server typescript ts-loader
接着,添加webpack配置文件webpack.config.js。
const path = require('path');
module.exports = {
entry: './src/main.ts',
devtool: 'eval',
devServer: {
contentBase: '.'
},
module: {
rules: [
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/
}
]
},
resolve: {
extensions: ['.tsx', '.ts', '.js']
},
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, '.')
}
};
其中特别需要说明的是,我们增加了sourcemap支持,以便进行代码debug。
然后,让我们把index.html的用户代码入口文件main.js修改一下:
<script src="bundle.js"></script>
测试webpack
在package.json中添加script脚本start:
{
"scripts": {
"start": "webpack-dev-server --open"
}
}
现在,我们可以在命令行中运行 :
npm start
之后就会看到浏览器自动加载页面。如果现在修改和保存任意源文件,web服务器就会自动重新加载编译后的代码。试一下,运行结果和之前一样!