0

テスト環境を構築するときだけノードモジュールをインストールしてもらいたいです。を実行しても、devDependenciesoptionalDependenciesはインストールされますnpm install <the-module>。代わりに、これらを に保存しtestDependenciesます。npm installこれを行うには、JSON オブジェクトからキーを取得し、それをコマンドにパイプするための *NIX ワンライナーがあればいいでしょう。これは 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 に答える