Original bug ticket: [https://npm.community/t/831](https://npm.community/t/831)
Originally filed: 2018-07-23T20:19:41.160Z
私はnpm6.13.0でこれに遭遇しています。 pack
には、 files
リストされている場合、 .gitignore
および/または.npmignore
によって無視されるファイルが含まれます。 これらのファイルが、ディレクトリ内の他のファイルを含める必要があるディレクトリ内にある場合に最も顕著になります。
私にとってうまくいくと思われる回避策の1つは、 files
配列の最後のエントリとして"!.DS_Store"
を追加することです(順序が重要であるように見えます)。
npm 6.12.1以降、似たようなものが表示されていると思います。 .gitignore
は、 npm-shrinkwrap.json
と/build/
ディレクトリを除外するように指定しています。 package.json
は、 files
セクションにbuild
ディレクトリを明示的にリストします。 ビルド手順の一環として、モジュールのルートディレクトリにnpm-shrinkwrap.json
し、それをbuild
ディレクトリにコピーします。
npm 6.4.1、〜6.7、〜6.9、〜6.10、〜6.11、および6.12.0では、パッケージ化されたファイル( npm pack
)にはbuild/npm-shrinkwrap.json
しか含まれていませんが、6.12.1以降ではbuild/npm-shrinkwrap.json
_と_ npm-shrinkwrap.json
両方が含まれます。
(コミュニティは現在ダウン/読み取り専用です。これが同じ問題でない場合は、お詫び申し上げます!)
公開されたパッケージの任意の部分にシュリンクラップファイルを含めるのは奇妙に思えますが、とにかくルートにしか効果がありません-ビルドプロセスがそこにコピーを置くのはなぜですか?
それは確かに良い質問です。
build /ディレクトリを取得してdockerコンテナイメージを作成する別のビルドステップの一部として、build /ディレクトリにあります。 アイデアは、 npm test
などをdockerの外で一度実行し、shrinkwrapファイルでdockerプロセスを高速化することnpm install
(docker内の
私の今の修正は、ファイルをbuild/
ディレクトリに入れるためにcp
ではなくmv
を使用することです。
編集:修正/回避策は機能しますが、この動作の変更により、レジストリのパッケージに、含まれてはならないファイルが誤って含まれる可能性があることを少し心配しています-別の部分のためにこれを偶然見つけましたnpm-shrinkwrap.json
ファイルの存在をチェックする私のシステムの。
最も参考になるコメント
私はnpm6.13.0でこれに遭遇しています。
pack
には、files
リストされている場合、.gitignore
および/または.npmignore
によって無視されるファイルが含まれます。 これらのファイルが、ディレクトリ内の他のファイルを含める必要があるディレクトリ内にある場合に最も顕著になります。私にとってうまくいくと思われる回避策の1つは、
files
配列の最後のエントリとして"!.DS_Store"
を追加することです(順序が重要であるように見えます)。