ধারাবাহিকভাবে এনপিএম স্ক্রিপ্টগুলি চালানো হচ্ছে


150

বলি আমার আছে

"scripts": {
    "pre-build": "echo \"Welcome\" && exit 1",
    "build_logic": "start cmd.exe @cmd /k \"yo esri-appbuilder-js:widget && exit 1\"",
    "post_build":  "start C:\\WebAppBuilderForArcGIS\\startupShortcut",
    "exit" : "start cmd.exe @cmd /k \"echo \"goodbye\" && exit 1\""
  },

এই সমস্ত স্ক্রিপ্টগুলি ক্রমানুসারে চালু করতে এনপিএম কমান্ড আমি কী চালাতে পারি। যখন আমি প্রাক / পোস্ট ফিক্সিং ব্যবহার করি তারা ক্রমানুসারে প্রবর্তন করে তবে তারা কার্যকর করার আগে পিতৃ স্ক্রিপ্টটি শেষ হওয়ার অপেক্ষা করে না। আমি একমাত্র সমাধানটি হ'ল এটির মত হ'ল: async.series সহায়ক ফাংশনে শেল কমান্ড গুলি ছড়িয়ে দেওয়ার সময় আমি গুলপ টাস্কগুলিকে কীভাবে অনুক্রমিকভাবে গুলি করব? ? আমি জানি যে গুলপ দিয়ে এটি করা যায় তবে আমি এনপিএমের সাথে তার দক্ষতাগুলি অনুসন্ধান করতে এখনই আটকে থাকতে চাই। কোন সাহায্যের জন্য ধন্যবাদ!


নীচে আপডেট উত্তর
— Tzach Ovadia

Startকমান্ডের ডকুমেন্টেশন অনুসারে , আপনি /waitপ্যারামিটার ব্যবহার করতে সক্ষম হবেন (অ্যাপ্লিকেশন শুরু করুন এবং এটি শেষ হওয়ার জন্য অপেক্ষা করুন)
— Tzach Ovadia

উত্তর:


316

এনপিএম রানের মাধ্যমে এই স্ক্রিপ্টগুলি চাওয়া এবং ডাবল এম্পারস্যান্ড দিয়ে তাদের চেইন করুন &&:

npm run pre-build && npm run build_logic && npm run post_build && npm run exit

ব্যাখ্যা:

  • ব্যবহারের &&(ডাবল এম্পারসেন্ড) অনুক্রমিক সঞ্চালনের জন্য।
  • ব্যবহারের &(একক এম্পারসেন্ড) সমান্তরাল সঞ্চালনের জন্য।

4
এটি সর্বোত্তম কাজ করে কারণ এটি কার্যকরভাবে কার্যকর করে, কারণ ওপিতে অনুরোধ হিসাবে প্রিভিওসগুলি শেষ না হওয়া পর্যন্ত প্রতিটি কমান্ড কার্যকর হয় না। ধন্যবাদ
— ধান

20
&&শেল দ্বারা মূল্যায়ন করা হয় এবং উইন্ডোজ কাজ করে না।
— বার্নহার্ড ডাবলার

12
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত নয়। @ বার্নহার্ডড্যাবলার অনুসারে &&সিনট্যাক্সটি ইউনিক্স কনস্ট্রাক্ট। এটি আপনার বিল্ডিং প্রক্রিয়াটির সম্ভাব্য ভঙ্গ পরিণতি সহ উইন্ডোয়ের মেশিনগুলিতে ভুলভাবে আচরণ করবে।
— রাফা গোল্ডবার্গ

3
@ রাফে গোল্ডবার্গ অ্যান্ড ও অপারেটরের উভয় উইন্ডো এবং * নিক্স পরিবেশে একই প্রয়োগ রয়েছে, যেমন ক্রমিক ক্রিয়াকলাপ..যদি আমরা কিছু অনুপস্থিত রয়েছি সেখানে কিছু নেই?
— ভাত

3
@ রাইস ওয়ে ওয়ে; আমার বোকা হয়ে আমার একক এবং ডাবল-অ্যাম্পারস্যান্ড অপারেটরদের মিশ্রিত করা হচ্ছে। প্রতি npm-run-allডক্স: "আমরা মাঝে মাঝে ব্যবহার &সমান্তরাল একাধিক কমান্ড চালানোর জন্য, কিন্তু Windows ' cmd.exe... [এই অপারেটর] সমর্থন করে না।" সুতরাং এটি প্রদর্শিত হবে আপনি ঠিক বলেছেন - কমপক্ষে আমার সংক্ষিপ্ত গবেষণা থেকে &&অপারেটর পুরোপুরি ক্রস-প্ল্যাটফর্মের সাথে সামঞ্জস্যপূর্ণ বলে মনে হচ্ছে।
— রাফে গোল্ডবার্গ

31

@ মোবাইলবিটিজেশনের দুর্দান্ত উত্তরের অনুসরণ করে , আপনি কম্যান্ডটি আরও খাটো এবং আরও বেশি পঠনযোগ্য করে তুলতে এনএমপি-রান-সমস্ত ব্যবহার করতে পারেন । তোমার ক্ষেত্রে:

"scripts": {
    ...
    "build": "run-s pre-build build_logic post_build exit"
}

run-sএকটি শর্টকাট npm-run-allসরবরাহ করে, যা প্রদত্ত সমস্ত এনপিএম-স্ক্রিপ্টগুলি যথাক্রমে চালায়, সুতরাং এটির -s( run-sএকটি সংক্ষিপ্ত সংস্করণ npm-run-all -s)।


19

আপনি কেবল তাদের অন্য স্ক্রিপ্টে স্ট্রিং করতে পারেন। "start": "pre-build && build_logic && post_build && exit"


2
আমি তাদের একে অপরের জন্য অপেক্ষা করার জন্য অপেক্ষা করব, এটি ক্রমাগত বন্ধ হবে তবে অপেক্ষা করবে না won't
— চাল

2
আমি মনে করি না এটি কোনও নোড / এনপিএম সমস্যা। startআপনি প্রযুক্তিগতভাবে উইন্ডোতে যে কমান্ডটি চালাচ্ছেন তা শেষ হয়েছে। অভ্যন্তরীণ পদ্ধতিটি শেষ না হওয়া পর্যন্ত অ্যাপ্লিকেশনটিকে খোলার জন্য বাধ্য করার জন্য /waitপতাকাটি ব্যবহার করুন । startstart
— ডিভিএলসজি

এটি পরীক্ষা করতে - start notepadকমান্ড প্রম্পট থেকে চালান , তারপরে মূল কমান্ড প্রম্পটটি একবার দেখুন। আপনি অন্য কমান্ড টাইপ করতে সক্ষম হওয়া উচিত। তারপরে দৌড়াও start /wait notepad। startকমান্ড "রান" চালিয়ে যাওয়া উচিত যখন আপনার নোটপ্যাড উইন্ডোতে খোলা আছে (কম্যান্ড প্রম্প্ট আবার কটাক্ষপাত করা)। তারপরে আপনি একবার নোটপ্যাড বন্ধ startকরলে শেষ হবে be
— ডিভিএলসজি

Solution অপেক্ষা সমাধানটি ডাবল অ্যাম্পারস্যান্ড বা প্রাক / পোস্ট স্থির এনএমপি কমান্ডের মাধ্যমে সংযুক্ত কমান্ডগুলির জন্য কাজ করে না।
— চাল

15

আপনি আপনার স্ক্রিপ্টগুলি উপসর্গ করতে পারেন preএবং postসুতরাং সেগুলি স্বয়ংক্রিয়ভাবে কার্যকর হবে:

"scripts": {
  "prebuild": "echo \"Welcome\" && exit 1",
  "build": "start cmd.exe @cmd /k \"yo esri-appbuilder-js:widget && exit 1\"",
  "postbuild":  "start C:\\WebAppBuilderForArcGIS\\startupShortcut",
  "exit" : "start cmd.exe @cmd /k \"echo \"goodbye\" && exit 1\""
}

তারপর চালান npm run build


এটি কাজ করে না, যেমনটি প্রশ্নের মধ্যে ইঙ্গিত করা হয়েছে: "যখন আমি প্রাক / পোস্ট ফিক্সিং ব্যবহার করি তারা ধারাবাহিকভাবে প্রবর্তন করে তবে তারা কার্যকর করার আগে পিতৃ স্ক্রিপ্টটি শেষ হওয়ার অপেক্ষা করে না" "
— রাসেল


2

আপনি একাধিক কমান্ডকে বিভিন্ন উপায়ে একত্রিত করতে এনএমপি-রান-সব ব্যবহার করতে পারেন

উদাহরণস্বরূপ, আপনার যদি নিম্নলিখিত স্ক্রিপ্টগুলি থাকে package.json:

"scripts": {
    "clean": "rimraf dist",
    "lint":  "eslint src",
    "build": "babel src -o lib"
}

আপনি এগুলি সমস্ত ক্রমিকভাবে চালাতে পারেন:

$ npm-run-all clean lint build

সমান্তরালভাবে কীভাবে একাধিক এনপিএম কমান্ড চালানো যায় তার জন্য এই প্রশ্নটি দেখুন


1
এই পথেই যেতে হবে। এনপিএম-রান-সবই সেরা। এবং এমন একটি প্যাকেজ.জসন তৈরি করবে যা ক্রস প্ল্যাটফর্ম।
— রবার্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.