场景
mpa项目为了缩减开发阶段打包时间,需要在执行npm run dev时手动声明打包的入口
process.argv
process.argv 属性返回一个数组,其中包含启动 Node.js 进程时传递的命令行参数。第一个元素是 process.execPath。如果需要访问 argv[0] 的原始值,请参见 process.argv0。第二个元素将是正在执行的 JavaScript 文件的路径。其余元素将是任何其他命令行参数
"scripts": {
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.config.js",
"build": "webpack-cli --config build/webpack.prod.config.js",
"mock": "node mock/server.js"
},
// 执行npm run dev后argv的值
[ '/usr/local/bin/node', '/Users/liujia/Documents/yideng/serverlesstest/node_modules/.bin/webpack-dev-server', '--inline', '--progress', '--config', 'build/webpack.dev.config.js']
// 这里面包括执行环境和命令行中的参数
npm动态传值
npmv2后支持动态参数传递
// 当只是做参数传递时 -- --xx 的形式能最大限度的保证传入的参数不被无用
npm run dev -- --foo=3
现在npm调用的命令变成了
webpack-dev-server --inline --progress --config build/webpack.dev.config.js "--foo=3"
// process.argv
[ '/usr/local/bin/node', '/Users/liujia/Documents/yideng/serverlesstest/node_modules/.bin/webpack-dev-server', '--inline', '--progress', '--config', 'build/webpack.dev.config.js', '--foo=3']
⚠️: webpack-cli4会强制校验参数合法性,所以需要用--env传入
npm run dev -- --env=["index","order"]