Cli: [バグ] `main`がパッケージに存在しなくても、` npmpack`は正常に完了します

作成日 2020年05月15日  ·  3コメント  ·  ソース: npm/cli

何/なぜ

これは、会社の内部パッケージの1つがリファクタリングを行い、package.jsonのmainを更新することを忘れずに、エントリポイントをリポジトリ内の別の場所に移動したときに発見されました。 その結果、 npm packが問題なく作成され、適切に機能する可能性のないパッケージを公開できるようになりました。

いつ

npm pack場合、したがってnpm publishが実行される場合

どこ

どうやって

現在の動作

npm packは、 mainがtarballに存在することを検証しないため、消費者が使用できないパッケージの作成と公開がいくらか簡単になります。

再現する手順

  • 空のディレクトリを作成します
  • npm initそしてデフォルト値ですべてを作成するステップスルー。 このようなpackage.json取得します
{
  "name": "npm-repro",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
  • このディレクトリでnpm packを実行し、tarballが正常に作成されていることを確認します
npm notice
npm notice 📦  [email protected]
npm notice === Tarball Contents ===
npm notice 205B package.json
npm notice === Tarball Details ===
npm notice name:          npm-repro
npm notice version:       1.0.0
npm notice filename:      npm-repro-1.0.0.tgz
npm notice package size:  241 B
npm notice unpacked size: 205 B
npm notice shasum:        ca39bc17447e27ef2fd0dea656e0e6b473f310d7
npm notice integrity:     sha512-p8tZD8W438r7t[...]7Oo0YMcAoNPzQ==
npm notice total files:   1
npm notice
npm-repro-1.0.0.tgz

index.jsがないため、このパッケージを使用しようとしても機能しません。

予想される行動

  • npm packは、ゼロ以外の終了コードで終了します。これにより、 npm publishが失敗し、tarballにpackage.jsonmainが含まれていないパッケージが防止されます。 package.jsonレジストリへの公開から。

WHO

私たちの会社は、私たちの内部レジストリに公開しようとしたときにこれに遭遇しました。

参考文献

  • 該当なし
Bug

最も参考になるコメント

それは合理的に聞こえます。 なんらかの理由で、私の会社は、発行が正常に完了するかどうかを確認するためのテストとしてnpm packを使用することにしました。 npm publish --dry-runはおそらくより良いチェックです。

全てのコメント3件

これがnpm-packlistバグとして適しているかどうかはわかりません。 npm組織が、2つの間の関心の分離をどのように維持したいかは完全にはわかりません。 つまり、 npm-packlist 、検証を行わずにインクルードを試みる必要のあるファイルのリストを盲目的に返し、 npm-packlist機能を使用するパッケージで高次の検証を実行するようにします。 ?

これはnpm-packlistの仕事ではなく、どちらかといえばnpm publishの仕事です。

それは合理的に聞こえます。 なんらかの理由で、私の会社は、発行が正常に完了するかどうかを確認するためのテストとしてnpm packを使用することにしました。 npm publish --dry-runはおそらくより良いチェックです。

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

goldingdamien picture goldingdamien  ·  4コメント

1000i100 picture 1000i100  ·  3コメント

darcyclarke picture darcyclarke  ·  3コメント

admosity picture admosity  ·  4コメント

FaizenR picture FaizenR  ·  3コメント