আমি কীভাবে আমার প্যাকেজটিতে একটি কাস্টম স্ক্রিপ্ট যুক্ত করব? জাভাস্ক্রিপ্ট ফাইল চালানো প্যাকেজ জসন ফাইলে?


176

আমি script1একটি প্রকল্প ডিরেক্টরিতে চালিত হবে কমান্ড কার্যকর করতে সক্ষম হতে চাই node script1.js

script1.jsএকই ডিরেক্টরিতে একটি ফাইল। কমান্ডটি প্রজেক্ট ডিরেক্টরি সম্পর্কিত নির্দিষ্ট হওয়া দরকার যার অর্থ আমি যদি অন্য কাউকে প্রজেক্ট ফোল্ডারটি প্রেরণ করি তবে তারা একই কমান্ডটি চালাতে সক্ষম হবে।

এখনও পর্যন্ত আমি যোগ করার চেষ্টা করেছি:

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

আমার প্যাকেজ.জেসন ফাইলটিতে তবে যখন আমি চালনার চেষ্টা করি তখন আমি script1নিম্নলিখিত আউটপুটটি পাই:

zsh: command not found: script1

প্রকল্প ফোল্ডারে উপরে উল্লিখিত স্ক্রিপ্টটি যুক্ত করতে প্রয়োজনীয় পদক্ষেপগুলি কি কেউ জানেন?

* দ্রষ্টব্য: বাশ প্রোফাইলে কমান্ডটি যুক্ত করা যাবে না (মেশিন নির্দিষ্ট কমান্ড হতে পারে না)

আপনার কোনও ব্যাখ্যা প্রয়োজন হলে দয়া করে আমাকে জানান।


3
আপনি কিভাবে এটি চালানোর চেষ্টা করছেন? আপনি কি "এনপিএম রান স্ক্রিপ্ট 1" ব্যবহার করছেন?
নিওরাড

3
আপনি স্ক্রিপ্ট 1 ব্যবহার করে চালিয়েছেন npm run script1?
ক্লডিওর্ডজজ

@ ক্লডিওর্ডজিজেড ঠিক আছে, বা সুজিতের জবাব অনুসারে, "এনপিএম স্টার্ট" এবং "এনপিএম টেস্ট"
হ'ল

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 liftযা এমনকি এনপিএম প্রয়োজন হয় না। এটি এনপিএম এর মাধ্যমে ইনস্টল করার ফলে এটি ইনস্টল হওয়া সিস্টেমে কোনও টার্মিনাল স্ক্রিপ্ট যুক্ত হবে? তা না হলে কীভাবে তৈরি হয়?
গ্যাল গ্রানফিল্ড

@ গ্যালগ্রেনফিল্ড আপনি কী বিশ্বব্যাপী (ইনস্টল-এনএমপি ইনস্টল) সেল ইনস্টল করেছেন?
ইয়ভেস ডরফসম্যান

আমার রয়েছে এবং আমি কিছু পাঠ করেছি, যতক্ষণ না সেল এর ওয়েবসাইট থেকে মনে রাখা যায়, এটি বিশ্বব্যাপী (এর মাধ্যমে -g) ইনস্টল করে দেখা গেছে যে সেলগুলি ব্যাশ / সেমিডলেট স্ক্রিপ্টগুলি ইনস্টল করে (যেমন sails generate api <api_name>(মেশিনটি ইনস্টল করা মেশিন অনুযায়ী বাশ / সেমিডলেট)) এবং মেশিনে
sc

কীভাবে আমার প্যাকেজ.জসনের মাধ্যমে ডাউনলোড করা এনপিএম প্যাকেজের জেএস ফাইল চালাবেন?
হার্দিক রানা

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
জ্যাক.জেএস

তারপরে পরিবর্তন "start"করুন script1, আপনি যে কোনও নাম ব্যবহার করতে পারেন, আমি startকী চালাতে হবে তা স্পষ্টভাবে সংজ্ঞায়িত করতে ব্যবহার করতে পছন্দ করি
সুজিত জয়সওয়াল

3
@ সুজিৎ-জয়সওয়াল কেবলমাত্র শুরু থেকে স্ক্রিপ্ট 1 এ পরিবর্তন করা কার্যকর হচ্ছে না। "শুরু" শব্দটি এনপিএম-এ সংরক্ষিত থাকে, তাই এটি কার্যকর হয়। স্ক্রিপ্ট 1 শব্দটি নয় এবং এটি স্বীকৃত হবে না, এমনকি এটি প্যাকেজ.জসনে সংজ্ঞায়িত হয়ে থাকলেও উপরের ওয়েসলিস্মিথ উত্তরটি সঠিক, কেবলমাত্র কলটিতে রান যোগ করুন।
প্রেড্রাগ স্টোজাদিনোভিও

17

পদক্ষেপ নীচে রয়েছে:

  1. প্যাকেজ.জসনে যোগ করুন:

    "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


এটি তার উত্তর @ জ্যাক.জেএস মন্তব্যের ভিত্তিতে স্বীকৃত উত্তর হওয়া উচিত, অর্থাত কীভাবে এটি একটি একক আদেশ দিয়ে চালানো যায়।
আদমজেবি

এই প্রশ্নের উপর ভিত্তি করে গ্রহণযোগ্য উত্তর হওয়া উচিত
দামিয়ান

2

স্ক্রিপ্টগুলিতে বলতে দিন যে আপনি একটি কমান্ড দিয়ে 2 টি কমান্ড চালাতে চান:

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

এখন আপনার টার্মিনালে যান এবং সেখানে চালান npm run singleCommandToRunTwoCommand


যদিও সহায়ক, এটি সরাসরি ওপি-র প্রশ্নের উত্তর দেয় না।
আদমজেবি

1
মূলত আমরা দৃ rig়পথে পথনির্দেশ করতে চাই, আপনি নিজেরাই বেশি কিছু করেছেন। এটি শেখার উপযুক্ত উপায়।
সোবান আরশাদ

@ অ্যাডামজেবি তিনি করেন, কারণ তিনি এনপিএম রান <script_name> ব্যবহার করেছেন
কুবাদেব

@ কুবাদেব, আমার অর্থ পেডেন্টিক হওয়ার কথা নয়, কেবল এটাই ইঙ্গিত করছিলেন যে 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"
  },

আপনি দেখতে পাচ্ছেন, স্ক্রিপ্ট "বিল্ড_সি" কৌণিক অ্যাপ্লিকেশন তৈরি করছে, তারপরে একটি ডিরেক্টরি থেকে সমস্ত পুরানো ফাইল মুছে ফেলবে, এবং শেষ পর্যন্ত ফলাফল বিল্ড ফাইলগুলি অনুলিপি করে।


2
এখানে কিছু দরকারী তথ্য আছে &&- stackoverflow.com/questions/39172536/...
Simon_Weaver
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.