2

私は自分のモジュールにいくつかの依存関係を持つ nodejs プロジェクトを持っています。npm の現在のベスト プラクティスに従って、これらの依存関係はnpm link/npm link $package-nameコマンドを使用して表されるため、プロジェクトのnode_modules. ローカルで動作します。

ただし、そのプロジェクトを github にプッシュすると、リンクはリンクとして保持されます。つまり、それを複製した他の人は (非常に可能性が高い) 壊れたリンクを見ることになります。別のポイントは、ディレクトリを github にまったくプッシュすることnode_modulesです。これまでのところ、github からクローンを作成すると、すべての依存関係が解決されたプロジェクトの完全なインスタンスが得られますが、その一方で、突然多くのサードパーティのものがあります私のレポ。

この種の状況に対処するためのベストプラクティスは何ですか?

私が気付いたのは、インストールされたコードとして依存関係をチェックインすることはとにかく間違っているということです。プラットフォーム固有の方法でインストールする必要があるバイナリが含まれている可能性があります依存関係をチェックインしないのですか?

4

2 に答える 2

2

まず、git プロジェクトに他のノード モジュールを含めないでください。

cd ~/your_module && echo "/node_modules" >> .gitignore

次に、モジュールに依存関係がある場合は、package.json. これが私のburroモジュールの例です

// package.json
{
  // ...
  "devDependencies": {
    "mocha": "~1.8.1",
    "hiccup": "~0.1.4"
  },
  "dependencies": {
    "bun": "~0.0.5"
  }
}

価値のあることですが、私は実際にはこのnpm link機能を使用していません。すべてのモジュールを個別にビルド/テストします。他の例が必要な場合は、私の githubリポジトリで見ることができるいくつかの例があります。

私の基本的なワークフローは次のとおりです。

  1. パッチモジュール A
  2. モジュール A のバンプ バージョン
  3. npm publishモジュール A
  4. モジュール B のモジュール A のバージョン依存関係をバンプする
  5. npm installモジュール B のモジュール A を再
  6. モジュール A の新しいバージョンで動作するようにモジュール B にパッチを適用します (必要な場合)。
  7. モジュール B のバンプ バージョン
  8. npm publishモジュールB

npm link便利ですが、モジュール間の結合がきつすぎることを可能にする/奨励すると思います。私は「1 つのことをしっかりと行う」というマントラを固く信じており、すべてのモジュールを作成するときにこれを念頭に置いています。このワークフローを使用すると、機能を適切にカプセル化した状態に保つことができ、コミュニティはあなたのリリースを気に入ってくれるでしょう。


github ビットに関しては、これnpmはあまり気にしません。習慣として、npm publishリリースする前に、常にそのコミットにモジュール バージョンのタグを付けます。これが例です

  1. バージョンを「0.1.5」に設定package.json
  2. git commit -m "bump to version 0.1.5"
  3. git tag v0.1.5
  4. git push origin master --tags
  5. npm publish

現在、npmjs.org と github.com の両方が同じバージョンに同意しています。どちらのソースからパッケージをダウンロードしたユーザーも、常に同じものを取得します。

于 2013-04-27T08:16:16.630 に答える