Original bug ticket: [https://npm.community/t/831](https://npm.community/t/831)
Originally filed: 2018-07-23T20:19:41.160Z
Saya mengalami ini di npm 6.13.0 . pack
akan menyertakan file yang diabaikan oleh .gitignore
dan/atau .npmignore
jika terdaftar di files
. Ini paling terlihat ketika file-file itu berada di dalam direktori di mana file-file lain dalam direktori tersebut diinginkan untuk dimasukkan.
Satu solusi yang tampaknya berhasil bagi saya adalah menambahkan "!.DS_Store"
sebagai entri terakhir dalam array files
(urutan tampaknya penting).
Saya pikir saya melihat sesuatu yang serupa sejak npm 6.12.1: .gitignore
menentukan untuk mengecualikan npm-shrinkwrap.json
dan direktori /build/
. package.json
mencantumkan direktori build
secara eksplisit di bagian files
. Sebagai bagian dari prosedur pembuatan saya, saya membuat npm-shrinkwrap.json
di direktori root modul, yang kemudian disalin ke direktori build
.
Dengan npm 6.4.1, ~6.7, ~6.9, ~6.10, ~6.11 dan 6.12.0 file paket (dari npm pack
) hanya berisi build/npm-shrinkwrap.json
, tetapi dengan 6.12.1 dan yang lebih baru termasuk build/npm-shrinkwrap.json
_dan_ npm-shrinkwrap.json
.
(Komunitas sedang down/read-only sekarang, jika ini bukan masalah yang sama saya ingin meminta maaf!)
sepertinya aneh bagi saya untuk menyertakan file shrinkwrap di bagian mana pun dari paket yang diterbitkan, tetapi itu hanya akan berpengaruh di root - mengapa proses build Anda meletakkan salinan di sana?
Itu tentu pertanyaan yang bagus.
Saya memilikinya di direktori build/ sebagai bagian dari langkah build lain yang mengambil direktori build/ dan membuat gambar wadah buruh pelabuhan. Idenya adalah untuk menjalankan npm test
dll sekali di luar buruh pelabuhan, dan kemudian membuat file shrinkwrap mempercepat proses buruh pelabuhan (dengan membiarkan npm install
di dalam buruh pelabuhan mengambil file yang sama persis). Ini kemudian juga akan berfungsi sebagai dokumentasi tentang apa yang digunakan untuk membangun. Prosesnya cukup menyalin npm-shrinkwrap.json ke direktori build.
Perbaikan untuk saya sekarang adalah menggunakan mv
daripada cp
untuk memasukkan file ke direktori build/
.
EDIT: Perbaiki/Penyelesaian untuk saya berfungsi, tetapi saya agak khawatir bahwa karena perubahan perilaku ini, paket-paket pada pendaftar dapat secara tidak sengaja berisi file yang seharusnya tidak dikandungnya - saya menemukan ini secara tidak sengaja karena bagian lain sistem saya memeriksa keberadaan file npm-shrinkwrap.json
.
Komentar yang paling membantu
Saya mengalami ini di npm 6.13.0 .
pack
akan menyertakan file yang diabaikan oleh.gitignore
dan/atau.npmignore
jika terdaftar difiles
. Ini paling terlihat ketika file-file itu berada di dalam direktori di mana file-file lain dalam direktori tersebut diinginkan untuk dimasukkan.Satu solusi yang tampaknya berhasil bagi saya adalah menambahkan
"!.DS_Store"
sebagai entri terakhir dalam arrayfiles
(urutan tampaknya penting).