9

私はこのシナリオに何度も遭遇しましたが、まだ答えが見つかりません。私は新しい Node.js プロジェクトを開始しています。このプロジェクトは、他のいくつかのライブラリに依存します。議論のために、いくつかは新しいプロジェクトで git サブモジュールとして追加できる純粋な JS ライブラリであるとしましょうが、一部には追加の作業が必要な部分 (npm がインストールするシステム依存関係、またはコンパイルする必要がある C ライブラリなど) があるとします。 )。

このプロジェクトを開始して git に追加する最良の方法は次の 2 つです。

  • 他の人のライブラリは私たち自身のリポジトリにコミットされておらず、代わりにサブモジュールであるか、動的に取り込まれて npm によってインストールされます。
  • リポジトリを複製して作業環境を整えるためだけに従わなければならない指示の大きなリストを用意する必要はありません。git submodules update --init --recursive を実行することは問題ありません。npm コマンドを実行して package.json を読み取り、依存関係をインストールすることは問題ありません (そのようなコマンドは存在しますか? )。必要がなければ、'make' や 'ant' を使用したくありません。

これを行う最善の方法について何か考えはありますか?とても単純で基本的なことのように思えますが、私がやろうとしていることの例は 1 つも見つかりませんでした。

編集:文法

4

1 に答える 1

10

編集以下を無視しますが、参照用に残しておきます。時々私は朝にはっきりとは思いません:)

package.jsonファイルを作成し、依存関係を追加すると、インストールは次のようになります。

npm install

プロジェクトディレクトリから。 git ignore追加されたすべてのプロジェクト。


npm submodule foo

パッケージをnode_modulesviaにインストールするgit submoduleので、githubなどはそれらがリンクしていることを認識します。これは、npmパッケージにgitURIが含まれている場合は常に機能します。残念ながら、良い数はそうではないので、あなたはそれらに運が悪いです。

npmまた、これを行うと、モジュールで動作しなくなることに注意してください。たとえばnpm、を介して更新することはできません。を介して更新する必要があります。git


または、次のようなこともできます。

./modules.js

modules.exports = [ 'express@1.0', 'jade@2.0', 'stylus@3.0' ];

。/作る

#!/usr/bin/env node
var modules = require( './modules' )
  ,   spawn = require('child_process').spawn;

for( var i=0, l=modules.length; i<l; i++ ){
    spawn( 'npm', [ 'install', modules[i] ] );
}
于 2011-09-29T14:45:45.537 に答える