命令行参数
2018-09-08 本文已影响2人
IOneStar
原文首次发表在命令行参数
node中可以通过process.argv来获取参数
- 新建一个shell.js
console.log(process.argv);
在终端输入 node shell.js
[ '/Users/wangyaxing/.nvm/versions/node/v10.7.0/bin/node',
'/Users/wangyaxing/temp/vue-project/shell.js' ]
在终端输入 node shell.js abc
[ '/Users/wangyaxing/.nvm/versions/node/v10.7.0/bin/node',
'/Users/wangyaxing/temp/vue-project/shell.js',
'abc' ]
process.argv的用法是第一个是node文件, 第二个是脚本文件, 第三个是参数
npm scripts(npm脚本)发送命令行参数
什么是npm scripts
npm 允许在package.json文件里面,使用scripts字段定义脚本命令。
{
// ...
"scripts": {
"build": "node build.js"
}
}
上面代码是package.json文件的一个片段,里面的scripts字段是一个对象。它的每一个属性,对应一段脚本。比如,build命令对应的脚本是node build.js。
原理
执行npm run ,会自动创建一个shell, 在这个shell里面执行指定的脚本命令。
比较特别的是, 这个shell 会自动将当前目录下的node_modules/.bin子目录加入PATH
,执行结束, 再将PATH
变量恢复原样
通配符
由于 npm 脚本就是 Shell 脚本,因为可以使用 Shell 通配符。
"lint": "jshint *.js"
"lint": "jshint **/*.js"
上面代码中,表示任意文件名,*表示任意一层子目录。
如果要将通配符传入原始命令,防止被 Shell 转义,要将星号转义。
"test": "tap test/\*.js"
传参
将命令行参数发送到npm脚本:
npm run [command] [-- <args>]
注意必要的--
,需要将参数传递到npm命令本身,并将其传递给脚本。
使用webpack.DefinePlugin在打包时对文件中的变量进行替换
plugins: [
new webpack.DefinePlugin({
'domain': process.argv[2]
}),
}