1.项目根目录下建立个config文件夹。
2.config文件夹下建立个webpack.config.js配置脚本,内容如下:
var path = require("path"); var webpack = require("webpack"); var merge = require("webpack-merge"); var webpackConfig = require("@ionic/app-scripts/config/webpack.config"); const devConfig = { module: { loaders: [ { test: /\.ts$/i, exclude: /node_modules/, loader: "ts-nameof-loader" } ] } }; const prodConfig = { module: { loaders: [ { test: /\.ts$/i, exclude: /node_modules/, loader: "ts-nameof-loader" } ] } }; const customConfig = { dev: devConfig, prod: prodConfig }; // Sometimes you may need to support multiple targets, webpack - merge // will accept an object where each key represents the target configuration. // The output becomes an array of configurations where matching keys are merged // and non- matching keys are added. let webpackMergedConfig = merge.multiple(customConfig, webpackConfig); module.exports = { dev: webpackMergedConfig[0], prod: webpackMergedConfig[1] };
3.为Ionic项目安装webpack-merge、ts-nameof、ts-nameof-loader包:
npm install webpack-merge ts-nameof ts-nameof-loader --save-dev
4.在package.json中设置自定义的webpack配置文件:
{ //... "config": { "ionic_webpack": "config/webpack.config.js" }, //... }
注意:
let webpackMergedConfig = merge.multiple(customConfig, webpackConfig);
这里customConfig必须在webpackConfig的前面。
目前的缺陷:
使用nameof之后,调试时ts的source-map会变成js,可读性变差。
如果在webpack.config.js里配置上enforce: “pre”。
可以让source-map正常,但是编译出的js却带有nameof,会导致无法运行或者报错。