之前用ts写了一两个小游戏,今天就写一个webpack ts环境搭建
安装node
【下载地址】http://nodejs.cn/download/
node的安装就不在这里讲了。
创建目录
创建webpack-ts文件夹
进入该目录 cd webpack-ts
运行 npm init
生成package.json文件
安装所需要的依赖
"devDependencies": { "autoprefixer": "^6.6.0", // css 自动根据浏览器加前缀 "babel-preset-env": "^1.7.0", // js 转换的 其实用不着 "css-loader": "^0.27.0", // css 加载器 "file-loader": "^2.0.0", // 文件 加载器 "html-webpack-plugin": "^4.0.0-alpha.2", // html插件 "postcss-loader": "^3.0.0", // 和 css-loader 一起用的 "rimraf": "^2.5.4", // 删除 打包文件夹的 "style-loader": "^0.23.0", // 样式加载 "ts-loader": "^5.3.3", // 重点 ts加载 "tslint": "^5.12.1", // ts代码检查 "tslint-loader": "^3.5.4", "typescript": "^3.2.4", "uglifyjs-webpack-plugin": "^1.3.0", // 压缩代码 "url-loader": "^0.5.8", "webpack": "^4.19.0", // webpack 打包工具 "webpack-cli": "^3.1.0", "webpack-dev-server": "^3.1.8" // 本地启动server }
添加启动打包命令
"scripts": { "dev": "webpack-dev-server --inline --hot --env.dev --mode development", "build": "rimraf dist && webpack -p --progress --hide-modules --mode production" },
创建webpack.config.js
const resolve = require('path').resolve; const HtmlWebpackPlugin = require('html-webpack-plugin'); const url = require('url'); const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); const publicPath = ''; module.exports = (options = {}) => ({ entry: { index: './src/main.ts' }, output: { path: resolve(__dirname, 'dist'), filename: options.dev ? 'static/js/[name].js' : 'static/js/[name].js?[chunkhash]', chunkFilename: 'static/js/[id].js?[chunkhash]', publicPath: options.dev ? '/assets/' : publicPath }, module: { rules: [ { test: /\.tsx?$/, use: ['ts-loader', 'tslint-loader'], exclude: /node_modules/ }, { test: /\.css$/, use: ['style-loader', 'css-loader', 'postcss-loader'] }, { test: /\.(png|jpg|jpeg|gif|eot|ttf|woff|woff2|svg|svgz)(\?.+)?$/, use: ['url-loader?limit=8192&name=static/images/[hash:8].[name].[ext]'] } ] }, plugins: [ new HtmlWebpackPlugin({ template: 'src/index.html', favicon: 'src/favicon.ico' }) ], optimization: { splitChunks: { chunks: 'all' }, minimizer: [ new UglifyJsPlugin({ /* your config */ uglifyOptions: { compress: true, ecma: 6, output: { comments: false }, compress: { dead_code: true, drop_console: true } }, sourceMap: false }) ] }, resolve: { alias: { '~': resolve(__dirname, 'src'), '@': resolve('src') }, extensions: ['.js', '.json', '.css', '*', '.ts', '.tsx'] }, devServer: { host: '127.0.0.1', port: 8010, proxy: { '/api/': { target: 'http://127.0.0.1:8080', changeOrigin: true, pathRewrite: { '^/api': '' } } }, historyApiFallback: { index: url.parse(options.dev ? '/assets/' : publicPath).pathname } }, devtool: options.dev ? '#eval-source-map' : '#source-map' });
创建tsconfig.json
{ "compilerOptions": { "module": "commonjs", "lib": ["es6", "dom"], "outDir": "./dist", "allowJs": true, "target": "es6", "sourceMap": true, "moduleResolution": "node", "experimentalDecorators": true, "jsx": "react" }, "include": ["./src/**/*", "./src/**.d.ts"], "typeRoots": ["node_modules/@types"] } 相关配置文档 http://www.typescriptlang.org/docs/handbook/tsconfig-json.html
创建tslint.json
{ "defaultSeverity": "warning", "extends": ["tslint:recommended"], "linterOptions": { "exclude": ["node_modules/**"] }, "rules": { "quotemark": [true, "single"], "member-access": [false], "no-shadowed-variable": false, "indent": [true, "spaces", 2], "interface-name": false, "ordered-imports": false, "object-literal-sort-keys": false, "no-consecutive-blank-lines": false, "max-classes-per-file": false, "arrow-parens": false, "no-empty": false, "no-console": false, "class-name": false, "trailing-comma": "never" } }
进入src目录,在index.html中添加
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>game</title> </head> <body> <h1>TS-GAME</h1> <main id="app"></main> </body> </html>
创建main.ts入口文件
在src中创建game文件夹
讲之前文章中的 flappy-bird.ts 文件放入game目录
在main.ts中编写
import game from './game/flappy-bird'; game.run();
根目录下启动命令 npm run dev,效果如下
结束语
这样简单的一个ts开发环境就搭好了,我主要用ts 和原生写法 写一些小游戏,本人也是初学者,有时候写游戏的思路不一定很好很对,用于分享和学习。谢谢~
Github地址
https://github.com/Reborn233/ts-game