nvm use 12npm i typescript -gtsc --init //生成Ts的标准编译配置(tsconfig.json)//安装webpack相关包npm i webpack wepack-cli webpack-dev-server -D//webpack加载包npm ts-loader typescript -D//自动生成首页并且加载相关Js文件的辅助工具npm install html-webpack-plugin -D//自动清空冗余编译代码cnpm install clean-webpack-plugin -D//合并代码工具cnpm install webpack-merge -D
创建build文件夹,添加四个文件
build/webpack.base.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin')module.exports = {entry: './index.ts',output: {filename: 'app.js'},resolve: {extensions: ['.js', '.ts', '.tsx']},module: {rules: [{test: /\.tsx?$/i,use: [{loader: 'ts-loader'}],exclude: /node_modules/}]},plugins: [new HtmlWebpackPlugin({template: './src/tpl/index.html'})]}
build/webpack.config.js
const { merge } = require('webpack-merge')const baseConfig = require('./webpack.base.config')const devConfig = require('./webpack.dev.config')const proConfig = require('./webpack.pro.config')module.exports = (env, argv) => {let config = argv.mode === 'development' ? devConfig : proConfig;return merge(baseConfig, config);};
build/webpack.dev.config.js
/*** 官方推荐包之一* cheap 会忽略文件的列信息* modules 会定位到Ts源码而不是转义后的Js代码* eval-source-map 会将source-map打包到Url文件中*/const webpack = require('webpack');module.exports = {plugins: [new webpack.LoaderOptionsPlugin({options: {devtools: 'cheap-module-eval-source-map'}})]}
build/webpack.pro.config.js
const { CleanWebpackPlugin } = require('clean-webpack-plugin')module.exports = {plugins: [new CleanWebpackPlugin()]}
添加package.json中的编译命令
..."scripts": {"start": "webpack serve --mode development --env development --config ./build/webpack.config.js","test": "echo \"Error: no test specified\" && exit 1"},...
