`npm build` tidak menjalankan skrip bernama" build "di package.json


144

Untuk modul baru yang saya coba gunakan npm buildtanpa gulp / Grunt / alat build khusus lainnya.

"scripts": {
  "build": "node build.js"
},

Build.js saya sederhana

console.log('Hello')

Namun, berlari

npm build

Cukup keluar tanpa mencetak apa pun, dengan status 0.

Berjalan:

npm install

Juga melakukan semua hal normal, tetapi tidak menjalankan build.js juga.

Bagaimana cara membuat npm menjalankan skrip build saya?

Sunting: bahkan perintah bash sederhana tampaknya tidak berfungsi, mis

"scripts": {
    "build": "touch TESTFILE"
},

Tidak membuat file dengan nama itu.


Solusi: gunakan installsaja.
Zaz

1
Ini pada dasarnya adalah gangguan NPM yang sangat besar dan tidak disengaja dan merupakan salah satu alasan saya terus menggunakan Yarn. Dengan benang, saya dapat menjalankan skrip kustom apa pun hanya sebagai parameter yaitu buku cerita benang akan menjalankan skrip buku cerita. Di NPM saya harus melakukan npm run storybook dan di atas itu, jika saya ingin melewatkan parameter apa pun melalui npm, itu membutuhkan - sebelumnya, jadi ketika membandingkan buku cerita benang --ci ke npm menjalankan buku cerita - --ci, itu no-brainer bagi saya.
Emobe

Jawaban:


250

Sayangnya npm buildsudah merupakan perintah internal , seperti yang dijelaskan di dokumen :

Ini adalah perintah pipa yang dipanggil oleh npm link dan npm install. Biasanya tidak harus dipanggil secara langsung.

Karena perintah itu sudah ada, perintah itu selalu membayangi Anda "build": "node build.js".

Cara yang sepenuhnya memenuhi syarat untuk menjalankan skrip Anda sendiri adalah dengan run-scriptatau aliasnyarun :

$ npm run build

npm startdan lainnya adalah jalan pintas, tetapi hanya merupakan opsi ketika perintah npm yang ada tidak membayangi, seperti npm buildhalnya.


Untuk anak cucu (seperti yang telah disebutkan orang lain) npm builddigunakan oleh npm untuk membuat addon Node C / C ++ asli menggunakan node-gyp . Ini tidak didokumentasikan dengan baik karena biasanya terjadi secara otomatis, tetapi jika Anda tertarik, kode sumbernya ada di sini .


16
Jadi apa yang npm build lakukan? Sejauh yang saya bisa lihat, semua file sama sekali tidak berubah ...
qntm

2
Beberapa paket memerlukan proses pembangunan. Saat Anda menjalankan npm installdan npm menemukan paket yang memiliki pengikatan C / C ++ atau umumnya sth yang memerlukan node-gyp untuk dijalankan kemudian paket tersebut dimulai npm build. Anda dapat membangun kembali paket-paket itu hanya dengan menjalankannya npm buildsendiri.
Jakub Miziołek

4
perintah internal harus diubah namanya menjadi _builddan npm buildharus menjadi jalan pintas seperti npm startdannpm test
Pawel

1
Saya mengerti bahwa npm builditu tidak akan memanggil skrip saya, dan itu digunakan untuk membangun komponen terkompilasi dari sebuah paket. Saya masih tidak yakin bagaimana cara melakukannya: file apa yang dicari, dll?
aaaidan

1
Jika saya menulis paket sendiri, alangkah baiknya mengetahui, apa yang harus dilakukan untuk mengisi npm builddengan makna ...
Frank Nocke

20

Skrip bernama "build" package.jsontidak spesial sama sekali. Satu-satunya cara untuk menjalankannya adalah dengan memanggil:

npm run-script build

Ada beberapa nama yang dipanggil secara otomatis oleh npm , tetapi "build" bukan salah satunya. Daftar lengkapnya adalah:

  • prepublish, publish,postpublish
  • preinstall, install,postinstall
  • preuninstall, uninstall,postuninstall
  • preversion, version,postversion
  • pretest, test,posttest
  • prestop, stop,poststop
  • prestart, start,poststart
  • prerestart, restart,postrestart
  • preCUSTOMdan postCUSTOMuntuk nama skrip kustom.


3

Saya mengalami masalah dengan npm run buildtidak mencetak apa pun. akhirnya menggunakan npm run build --verboseuntuk mendapatkan output yang saya butuhkan.


2

Npm build mengharapkan

Folder yang berisi file package.json di akarnya

Coba gunakan skrip npm di package.json Anda, seperti start npm klasik


Artinya ini npm build .harus bekerja, dan, dalam kasus saya, npm mengeksekusi skrip "build" di "package.json" saya seperti yang saya harapkan.
Erhhung
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.