`npm build` ไม่ได้รันสคริปต์ชื่อ“ build” ใน package.json


138

สำหรับโมดูลใหม่ฉันพยายามใช้npm buildโดยไม่ต้องใช้เครื่องมือสร้างพิเศษอื่น ๆ

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

build.js ของฉันเป็นเพียงแค่

console.log('Hello')

อย่างไรก็ตามการวิ่ง

npm build

เพียงออกโดยไม่ต้องพิมพ์อะไรเลยด้วยสถานะ 0

วิ่ง:

npm install

ทำสิ่งปกติทั้งหมดด้วยเช่นกัน แต่ไม่เรียกใช้ build.js เช่นกัน

ฉันจะทำให้ npm รันสคริปต์บิลด์ของฉันได้อย่างไร

แก้ไข: แม้แต่คำสั่ง bash แบบธรรมดาก็ไม่ทำงานเช่น

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

อย่าสร้างไฟล์ด้วยชื่อนั้น


วิธีแก้ปัญหา: ใช้installแทน
Zaz

นี่เป็นความรำคาญครั้งใหญ่และไม่ได้ใช้งานของ NPM และเป็นหนึ่งในเหตุผลที่ฉันยังคงใช้เส้นด้าย ด้วยเส้นด้ายฉันสามารถเรียกใช้สคริปต์ที่กำหนดเองใด ๆ เช่นเดียวกับพารามิเตอร์เช่นนิทานนิทานจะเรียกใช้สคริปต์นิทาน ใน NPM ฉันต้องทำ npm run storybook และนอกจากนั้นถ้าฉันต้องการส่งพารามิเตอร์ใด ๆ ผ่าน npm มันต้อง - ก่อนหน้านั้นดังนั้นเมื่อเปรียบเทียบนิทานนิทาน --ci ถึง npm run storybook - --ci, มันไม่ใช่เกมง่ายๆสำหรับฉัน
Emobe

คำตอบ:


243

น่าเสียดายที่npm buildมีคำสั่งภายในอยู่แล้วดังที่อธิบายไว้ในเอกสาร :

นี่คือคำสั่ง plumbing ที่เรียกใช้โดยลิงก์ npm และการติดตั้ง npm โดยทั่วไปไม่ควรเรียกโดยตรง

เนื่องจากคำสั่งนั้นมีอยู่แล้วจึงมีเงาเหนือคุณ"build": "node build.js"เสมอ

วิธีที่มีคุณสมบัติครบถ้วนในการเรียกใช้สคริปต์ของคุณเองคือrun-scriptหรือrunด้วยนามแฝง :

$ npm run build

npm startและอื่น ๆ เป็นวิธีการทางลัด แต่เป็นเพียงตัวเลือกเมื่อคำสั่ง npm ที่มีอยู่ไม่ได้ทำเงาเหมือนอย่างที่npm buildทำ


สำหรับลูกหลาน (กับคนอื่น ๆ ได้กล่าวถึง) npm buildจะถูกใช้โดย NPM เพื่อสร้างพื้นเมือง C / addons c ++ โหนดใช้โหนดโกง มันไม่ได้เป็นเอกสารที่ดีเพราะมักจะเกิดขึ้นโดยอัตโนมัติ แต่ถ้าคุณกำลังสนใจรหัสที่มาอยู่ที่นี่


15
แล้วจะ npm buildทำอย่างไรดี? เท่าที่ผมสามารถเห็นมันออกทุกไฟล์ที่ไม่เปลี่ยนแปลง ...
qntm

2
บางแพ็คเกจต้องการกระบวนการสร้าง เมื่อคุณกำลังทำงานnpm installและ NPM พบแพคเกจที่มี C / C ++ npm buildหรือผูกทั่วไปฏว่าความต้องการโหนดโกงเพื่อให้ทำงานแล้วก็เริ่มต้น คุณสามารถสร้างแพ็คเกจเหล่านั้นได้ด้วยการทำงานnpm buildเพียงอย่างเดียว
Jakub Miziołek

4
สั่งภายในควรจะเปลี่ยนชื่อ_buildและnpm buildshuould จะเป็นทางลัดเช่นnpm startและnpm test
Pawel

1
ฉันเข้าใจว่าnpm buildจะไม่เรียกสคริปต์ของฉันและมันใช้เพื่อสร้างส่วนประกอบที่คอมไพล์ของแพ็คเกจ ฉันยังไม่แน่ใจว่ามันเกี่ยวกับการทำเช่นนั้น: ไฟล์อะไรที่มันมองหาและอื่น ๆ ?
aaaidan

1
ถ้าฉันจะเขียนแพ็คเกจด้วยตัวเองมันคงเป็นการดีที่จะรู้ว่าจะทำอย่างไรเพื่อเติมเต็มnpm buildความหมาย ...
Frank Nocke

20

สคริปต์ที่ชื่อว่า "build" in package.jsonไม่ได้พิเศษ แต่อย่างใด วิธีเดียวในการทำให้มันทำงานคือการโทร:

npm run-script build

มีบางชื่อที่ถูกเรียกโดยอัตโนมัติภายในเวลา 23.00 น . แต่ "build" ไม่ใช่ชื่อเหล่านั้น รายการทั้งหมดคือ:

  • prepublish, publish,postpublish
  • preinstall, install,postinstall
  • preuninstall, uninstall,postuninstall
  • preversion, version,postversion
  • pretest, test,posttest
  • prestop, stop,poststop
  • prestart, start,poststart
  • prerestart, restart,postrestart
  • preCUSTOMและpostCUSTOMสำหรับชื่อสคริปต์ที่กำหนดเอง


3

ฉันมีปัญหากับการnpm run buildไม่พิมพ์อะไรเลย จบลงด้วยการใช้npm run build --verboseเพื่อให้ได้ผลลัพธ์ที่ฉันต้องการ


2

สร้าง NPM ที่คาดไว้

โฟลเดอร์ที่มีไฟล์ package.json ในรูท

ลองใช้สคริปต์ npmใน package.json ของคุณเช่นเริ่มต้น npm แบบคลาสสิก


สิ่งนี้หมายความว่าnpm build .ควรใช้งานได้และในกรณีของฉัน npm จะเรียกใช้สคริปต์ "build" ใน "package.json" ของฉันตามที่ฉันหวังไว้
Erhhung
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.