मैं अपने पैकेज में एक कस्टम स्क्रिप्ट कैसे जोड़ सकता हूँ। Json फ़ाइल जो जावास्क्रिप्ट फ़ाइल चलाती है?


176

मैं script1एक परियोजना निर्देशिका में कमांड निष्पादित करने में सक्षम होना चाहता हूं जो चलेगी node script1.js

script1.jsउसी निर्देशिका में एक फ़ाइल है। कमांड को प्रोजेक्ट डायरेक्टरी के लिए विशिष्ट होना चाहिए, जिसका अर्थ है कि अगर मैं किसी अन्य व्यक्ति को प्रोजेक्ट फ़ोल्डर भेजता हूं, तो वे उसी कमांड को चलाने में सक्षम होंगे।

अब तक मैंने जोड़ने की कोशिश की है:

"scripts": {
    "script1": "node script1.js"
}

मेरे पैकेज.जॉन फ़ाइल में लेकिन जब मैं चलाने की कोशिश करता हूं तो मुझे script1निम्न आउटपुट मिलते हैं:

zsh: command not found: script1

क्या किसी को प्रोजेक्ट फ़ोल्डर में ऊपर वर्णित स्क्रिप्ट को जोड़ने के लिए आवश्यक कदम पता है?

* नोट: कमांड को बैश प्रोफाइल में नहीं जोड़ा जा सकता (मशीन विशिष्ट कमांड नहीं हो सकता)

कृपया मुझे बताएं कि क्या आपको किसी स्पष्टीकरण की आवश्यकता है।


3
आप इसे कैसे चलाना चाह रहे हैं? क्या आप "npm रन स्क्रिप्ट 1" का उपयोग कर रहे हैं?
नीरद

3
क्या आपने स्क्रिप्ट 1 का उपयोग करके भाग लिया npm run script1?
क्लोडिऑर्गज

@Claudiordgz सही है, या जैसा कि सुजीत के जवाब में, "npm start" और "npm test" स्क्रिप्ट के लिए शॉर्टकट हैं जिन्हें "start" और "test" कहा जाता है
mjohnsonengr

1
मेरे टर्मिनल में मुझे एक शब्द कमांड टाइप करने में सक्षम script1होना चाहिए जिसे कहा जाना चाहिएnode script1.js
Jake.JS

जवाबों:


260

कस्टम लिपियों

npm run-script <custom_script_name>

या

npm run <custom_script_name>

अपने उदाहरण में, आप चलाना चाहते हैं npm run-script script1या npm run script1

Https://docs.npmjs.com/cli/run-script देखें

जीवनचक्र लिपियों

नोड आपको कुछ निश्चित जीवन चक्र की घटनाओं के लिए कस्टम स्क्रिप्ट चलाने की अनुमति देता है, जैसे npm installकि चलाने के बाद । इन्हें यहां पाया जा सकता है

उदाहरण के लिए:

"scripts": {
    "postinstall": "electron-rebuild",
},

यह electron-rebuildएक npm installकमांड के बाद चलेगा ।


1
npm run-script scriptnameमेरे लिए काम किया, लेकिन npm run scriptnameनहीं किया!
ब्लूप्रिंटचिस

"रन" कमांड के बिना कस्टम स्क्रिप्ट को चलाना कैसे संभव है? Sails.js खुराक है कि - यह एक आदेश है sails liftजो भी NPM की आवश्यकता होती है। एनपीएम के माध्यम से इसे स्थापित करने से सिस्टम पर एक टर्मिनल स्क्रिप्ट जुड़ती है जहां यह स्थापित है? यदि नहीं, तो यह कैसे बनाया जाता है?
गाल ग्रैनफेल्ड

@ GalGrünfeld ने विश्व स्तर पर (npm install -g) पाल स्थापित किया?
यवेस डोरफ़्समैन

मेरे पास है, और मैंने कुछ पठन किया है, और जहां तक ​​सेल की वेबसाइट से याद किया जा सकता है, इसे विश्व स्तर पर स्थापित करके (के माध्यम से -g), पता चला है कि पाल बैश / cmdlet स्क्रिप्ट स्थापित करता है (उदाहरण के लिए sails generate api <api_name>(मशीन के अनुसार bash / cmdlet जिस पर इसे इंस्टॉल किया गया है) और मशीन पर उन लिपियों के लिए वैश्विक पथ जोड़ता है।
गैल ग्रुएनफेल्ड

मेरे पैकेज के माध्यम से डाउनलोड npm पैकेज की js फ़ाइल कैसे चलाएं?
हार्दिक राणा

26

मैंने निम्नलिखित बनाया है, और यह मेरे सिस्टम पर काम कर रहा है। कृपया इसे आज़माएँ:

package.json:

{
  "name": "test app",
  "version": "1.0.0",
  "scripts": {
    "start": "node script1.js"   
  }
}

script1.js:

console.log('testing')

अपनी कमांड लाइन से निम्न कमांड चलाएँ:

npm start

अतिरिक्त उपयोग मामला

मेरे पैकेज.जसन फ़ाइल में आम तौर पर निम्नलिखित स्क्रिप्ट होती हैं, जो मुझे टाइपस्क्रिप्ट, सैस संकलन और साथ ही साथ सर्वर चलाने के लिए मेरी फाइलें देखने में सक्षम बनाती हैं।

 "scripts": {
    "start": "concurrently \"sass --watch ./style/sass:./style/css\" \"npm run tsc:w\" \"npm run lite\" ",    
    "tsc": "tsc",
    "tsc:w": "tsc -w", 
    "lite": "lite-server",
    "typings": "typings",
    "postinstall": "typings install" 
  }

1
script1.jsफ़ाइल को चलाने के लिए कमांड को एक कस्टम एक शब्द कमांड की आवश्यकता हैscript1
Jake.JS

तो बदल "start"करने के लिए script1, आप अपनी पसंद के किसी भी नाम का उपयोग कर सकते हैं, मैं का उपयोग करना पसंद startस्पष्ट रूप से परिभाषित क्या चलाना चाहिए करने के लिए
सुजीत जायसवाल

3
@ सुजीत-जायसवाल बस शुरू से स्क्रिप्ट 1 में बदल रहे हैं काम नहीं कर रहा है। शब्द "स्टार्ट" एनपीएम में आरक्षित है, इसलिए यह काम करता है। Script1 शब्द नहीं है और इसे तब भी मान्यता नहीं दी जाएगी, जब इसे पैकेज में परिभाषित किया गया हो। Json उपरोक्त wesleysmyth उत्तर सही है, बस कॉल में जोड़ें।
प्रेड्रैग स्टोजादिनोविक

17

चरण नीचे हैं:

  1. Package.json में जोड़ें:

    "bin":{
        "script1": "bin/script1.js" 
    }
  2. binप्रोजेक्ट डायरेक्टरी में एक फ़ोल्डर बनाएँ और runScript1.jsकोड के साथ फाइल जोड़ें :

    #! /usr/bin/env node
    var shell = require("shelljs");
    shell.exec("node step1script.js");
  3. npm install shelljsटर्मिनल में चलाएं

  4. npm linkटर्मिनल में चलाएं

  5. टर्मिनल से अब आप चला सकते हैं script1जो चलेगाnode script1.js

संदर्भ: http://blog.npmjs.org/post/118810260230/building-a-simple-command-line-tool-with-npm


यह उनके सवाल पर @ Jake.JS टिप्पणी के आधार पर स्वीकृत उत्तर होना चाहिए, अर्थात इसे एक ही कमांड से कैसे चलाया जाए।
एडमजेबी

यह प्रश्न के आधार पर स्वीकृत उत्तर होना चाहिए
डेमियन

2

स्क्रिप्ट्स में कहें कि आप एक कमांड के साथ 2 कमांड्स चलाना चाहते हैं:

"scripts":{
  "start":"any command",
  "singleCommandToRunTwoCommand":"some command here && npm start"
}

अब अपने टर्मिनल पर जाएं और वहां दौड़ें npm run singleCommandToRunTwoCommand


जबकि सहायक, यह सीधे ओपी के सवाल का जवाब नहीं देता है।
एडमजेब Adam

1
मूल रूप से हम रिग पथ पर मार्गदर्शन करने का इरादा रखते हैं, अधिक से अधिक आप अपने दम पर करते हैं। यह सीखने का उचित तरीका है।
सोबन अरशद

@AdamJB वह करता है, क्योंकि उसने npm रन का
Kubadev

@kubadev, मेरा मतलब पांडित्य नहीं था, बस इशारा कर रहा था कि ओपी को अपने प्रश्न के अनुसार एक शब्द कमांड के साथ एक स्क्रिप्ट चलाने की आवश्यकता है:In my terminal I need to be able to type the one word command called script1 which should run node script1.js
एडमजब

1

उदाहरण:

  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build --prod",
    "build_c": "ng build --prod && del \"../../server/front-end/*.*\" /s /q & xcopy /s dist \"../../server/front-end\"",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },

जैसा कि आप देख सकते हैं, स्क्रिप्ट "build_c" कोणीय अनुप्रयोग बना रहा है, फिर एक निर्देशिका से सभी पुरानी फ़ाइलों को हटाता है, फिर अंत में परिणाम बिल्ड फ़ाइलों की प्रतिलिपि बनाता है।


2
यहाँ कुछ उपयोगी जानकारी के बारे में है &&- stackoverflow.com/questions/39172536/…
Simon_Weaver
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.