根据参数动态安装节点包

时间:2017-06-11 15:29:04

标签: node.js gruntjs package.json

我需要动态更新node.js package.json 如果我用param A运行npm start它会安装

例如,如果我运行 npm start A ,它将启动

{
  "name": "simplenodeapp",
  "main": "app.js",
  "scripts": {
    "start": "node  app.js" <some param",
  },
  "license": "ISC",
  "dependencies": {
    "express":"*"
  },

}

如果我跑 npm start B

{
  "name": "simplenodeapp",
  "main": "app.js",
  "scripts": {
    "start": "node  app.js" <some param>",
  },
  "license": "ISC",
  "dependencies": {
    "HAproxy":"*"
  },

}

有可能吗?我需要以编程方式进行...

1 个答案:

答案 0 :(得分:1)

更新:

我希望我终于明白被问到的问题。

NPM允许您定义配置对象并传入动态参数。这些可以单独使用,也可以组合使用。

在下面的评论中,OP询问如何使用两个不同的文件名运行节点。这可以通过两种不同的方式实现。

选项1:

{
  "name": "test",
  "version": "1.0.0",
  "main": "index.js",
  "author": "Skyler Hair",
  "license": "MIT",
  "config": {
    "A": "index.js",
    "B": "app.js"
  },
  "scripts": {
    "start:A": "node $npm_package_config_A",
    "start:B": "node $npm_package_config_B"
  }
}

npm run start:Anpm run start:B

选项2:

{
  "name": "test",
  "version": "1.0.0",
  "main": "index.js",
  "author": "Skyler Hair",
  "license": "MIT",
  "scripts": {
    "start": "node"
  }
}

npm run start -- index.jsnpm run start -- app.js

原始回答:

您可以创建一个运行npm install的脚本,并将依赖项作为参数接受。例如,

{
  "name": "test",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "author": "Skyler Hair",
  "scripts": {
    "install": "npm install"
  }
}

可以使用

运行

npm run install -- express <other dependency> <another dep>