`एनपीएम बिल्ड 'पैकेज.जॉन में" बिल्ड "नाम की स्क्रिप्ट को नहीं चलाता है


138

एक नए मॉड्यूल के लिए मैं npm buildबिना gulp / ग्रंट / अन्य विशिष्ट बिल्ड टूल के उपयोग की कोशिश कर रहा हूं ।

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

मेरा build.js बस है

console.log('Hello')

हालाँकि, चल रहा है

npm build

बस कुछ भी छपाई के बिना बाहर निकलता है, 0 की स्थिति के साथ।

चल रहा है:

npm install

इसके अलावा सभी सामान्य चीजें करता है, लेकिन build.js भी नहीं चलाता है।

मैं अपनी बिल्ड स्क्रिप्ट को एनपीएम कैसे बना सकता हूं?

संपादित करें: यहां तक ​​कि साधारण बैश कमांड काम नहीं करते हैं, जैसे

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

उस नाम से कोई फ़ाइल नहीं बनाता है।


समाधान: installइसके बजाय का उपयोग करें ।
ज़ाज़

यह मूल रूप से एनपीएम की एक बड़ी और अनपेक्षित चिढ़ है और यार्न का उपयोग जारी रखने के कारणों में से एक है। यार्न के साथ, मैं किसी भी कस्टम स्क्रिप्ट को एक पैरामीटर के रूप में चला सकता हूं यानी यार्न स्टोरीबुक स्टोरीबुक स्क्रिप्ट चलाएगा। NPM में मुझे npm रन स्टोरीबुक करनी है और उसके शीर्ष पर, अगर मैं npm के माध्यम से किसी भी पैरामीटर को पास करना चाहता हूं, तो इसके लिए आवश्यकता है - इससे पहले, इसलिए यार्न स्टोरीबुक की तुलना करते समय - npm रन स्टोरीबुक के लिए - --ci, यह मेरे लिए एक दिमाग नहीं है।
एमोबे

जवाबों:


243

दुर्भाग्य npm buildसे पहले से ही एक आंतरिक कमांड है, जैसा कि डॉक्स में वर्णित है :

यह npm लिंक और npm इंस्टॉल द्वारा प्लंबिंग कमांड है। इसे आम तौर पर सीधे नहीं कहा जाना चाहिए।

क्योंकि वह आदेश पहले से मौजूद है, यह हमेशा आपके ऊपर छाया रहता है "build": "node build.js"

पूरी तरह से योग्य तरीका अपनी स्क्रिप्ट चलाने के लिए run-scriptया इसके उपनाम के साथ हैrun :

$ npm run build

npm startऔर अन्य लघु-हाथ तरीके हैं, लेकिन केवल एक विकल्प है जब एक मौजूदा npm कमांड इसे छाया नहीं करता है, जैसे कि npm buildकरता है।


पोस्टपेरिटी के लिए (जैसा कि अन्य लोगों ने उल्लेख किया है) npm-देशी जिपnpm build का उपयोग करके देशी C / C ++ नोड ऐडऑन बनाने के लिए उपयोग किया जाता है । यह अच्छी तरह से प्रलेखित नहीं है क्योंकि आमतौर पर यह स्वचालित रूप से होता है, लेकिन यदि आप रुचि रखते हैं तो स्रोत कोड यहां है


15
तो क्या करता npm build है? जहाँ तक मैं देख सकता हूँ यह पूरी तरह से अपरिवर्तित सभी फाइलों को छोड़ देता है ...
qntm

2
कुछ संकुल को एक निर्माण प्रक्रिया की आवश्यकता होती है। जब आप चल रहे हों npm installऔर npm को एक ऐसा पैकेज मिले, जिसमें C / C ++ बाइंडिंग हो या आम तौर पर sth जिसे चलाने के लिए नोड-जिप की आवश्यकता हो, तो शुरू करें npm build। आप केवल npm buildअकेले दौड़कर उन पैकेजों का पुनर्निर्माण कर सकते हैं।
जैकब मिज़िओलेक

4
आंतरिक कमांड का नाम बदल दिया जाना चाहिए _buildऔर npm buildshuould का शॉर्टकट होना चाहिए npm startऔरnpm test
Pawel

1
मैं समझता हूं कि npm buildमेरी स्क्रिप्ट को कॉल नहीं किया जाएगा, और इसका उपयोग पैकेज के संकलित घटकों के निर्माण के लिए किया जाता है। मैं अभी भी अनिश्चित हूँ कि यह किस तरह से हो रहा है: क्या फ़ाइलों के लिए लग रही है, आदि?
अयान

1
अगर मैं खुद एक पैकेज लिखता, तो यह जानना अच्छा लगता, कि npm buildअर्थ के साथ क्या करना है ...
फ्रैंक नॉक

20

"बिल्ड" के रूप में नामित स्क्रिप्ट package.jsonकिसी भी तरह से विशेष नहीं है। इसे चलाने का एकमात्र तरीका कॉल करना है:

npm run-script build

कुछ नाम हैं जो npm द्वारा स्वचालित रूप से कहलाते हैं , लेकिन "बिल्ड" उनमें से एक नहीं है। पूरी सूची है:

  • 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कस्टम स्क्रिप्ट नामों के लिए।

4

ठीक है, अपने आप में एक निर्माण चलाने के लिए, उपयोग करें:

npm run-script build

3

मुझे npm run buildकुछ भी न छापने में समस्या थी । npm run build --verboseमेरे द्वारा आवश्यक आउटपुट प्राप्त करने के लिए उपयोग किया गया।


2

Npm निर्माण की उम्मीद है

एक फ़ोल्डर जिसमें इसकी जड़ में एक package.json फ़ाइल है

अपने पैकेज में npm स्क्रिप्ट का उपयोग करने की कोशिश करें। क्लासिक npm की शुरुआत की तरह


इसका मतलब यह है कि npm build .काम करना चाहिए, और, मेरे मामले में, npm मेरे "package.json" में "बिल्ड" स्क्रिप्ट को निष्पादित करता है जैसा कि मुझे उम्मीद थी।
इरुहंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.