0

我希望仅在您设置测试环境时安装节点模块。如果您运行devDependenciesandoptionalDependencies仍将安装npm install <the-module>。相反,我会将这些存储在testDependencies. 要做到这一点,如果有一个 *NIX 单线从 JSON 对象中获取密钥并将其通过管道传递到命令中,那就太好了npm install。这可以用于 travisci 并使其默认安装不会安装这些额外的库。

您如何读取 package.json 文件、提取密钥以获取模块名称并运行npm install <keys>?package.json 看起来很像这样:

{
  "name": "the-module",
  "dependencies": {
    "express": "2.x"
  },
  "devDependencies": {
    "ejs": ">= 0.6.1"
  },
  "testDependencies": {
    "mocha": ">= 0.8.1",
    "chai": ">= 0.3.3",
    "sinon": ">= 1.3.1"
  }
}

要运行的命令是这样的:

npm install mocha chai sinon

试图做这样的事情:

npm install $(read-json ./package.json | extract-keys)
4

2 回答 2

4

想出了一个可怕的黑客:p

npm install $(node -e "console.log(Object.keys(JSON.parse(require('fs').readFileSync('./package.json', 'utf-8'))['testDependencies']).join(' '))")

仍在寻找“正确”的方法。

于 2012-09-13T01:36:45.193 回答
2

检查JSON.sh

此外,您可以直接使用使您的单行更短require('./package.json')- 它与JSON.parse(require('fs').readFileSync('./package.json', 'utf-8'))

于 2012-09-13T04:02:12.653 回答