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


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 notepadstartকমান্ড "রান" চালিয়ে যাওয়া উচিত যখন আপনার নোটপ্যাড উইন্ডোতে খোলা আছে (কম্যান্ড প্রম্প্ট আবার কটাক্ষপাত করা)। তারপরে আপনি একবার নোটপ্যাড বন্ধ 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.