javascript基础原理

命令行参数

2018-09-08  本文已影响2人  IOneStar

原文首次发表在命令行参数

node中可以通过process.argv来获取参数

  1. 新建一个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]
    }),
}

参考

npm scripts 使用指南
如何向npm脚本发送命令行参数?
编译环境中的几种传参方法

上一篇下一篇

猜你喜欢

热点阅读