命令行参数

作者: IOneStar | 来源:发表于2018-09-08 20:28 被阅读2次

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

    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脚本发送命令行参数?
    编译环境中的几种传参方法

    相关文章

      网友评论

        本文标题:命令行参数

        本文链接:https://www.haomeiwen.com/subject/cjulgftx.html