এনপিএম: প্যাকেজের জন্য পোস্ট ইনস্টল স্ক্রিপ্ট অক্ষম করুন


142

প্যাকেজ ইনস্টল করার সময় পোস্ট ইনস্টল স্ক্রিপ্টটি অক্ষম করতে কোনও এনপিএম বিকল্প বিদ্যমান? অথবা প্যাকেজ.জসন থেকে কোনও ক্ষেত্র পুনর্লিখনের জন্য?


প্রশ্নটি খুব স্পষ্ট তবে ... কোনও সুযোগেই কি এটি আপনার শেষ লক্ষ্য? github.com/zloirock/core-js#postinstall-message ;-)
কনিকে

উত্তর:


267

কেবল postinstallস্ক্রিপ্টগুলি অক্ষম করা সম্ভব নয় । তবে, আপনি সমস্ত স্ক্রিপ্টগুলি ব্যবহার করে অক্ষম করতে পারেন:

$ npm install --ignore-scripts

মন্তব্যগুলিতে যেমন ডেলবার্টো উল্লেখ করেছেন, এটি নির্ভরতার স্ক্রিপ্টগুলিও অক্ষম করে।


2
ধন্যবাদ. এটি আমার প্রয়োজন ঠিক তাই। আমি কোথায় এই ধরনের বিকল্পগুলি পেতে পারি? এটি 'এনএমপি সহায়তা ইনস্টল', 'এনপিএম সহায়তা কনফিগারেশন' এবং 'এনপিএম সহায়তা স্ক্রিপ্টস' এ বর্ণিত নয়।
farwayer

3
আমি কোডটি সরাসরি যাচাই করেছি: github.com/npm/npm/blob/master/lib/build.js#L179
জার্গো এরদোসি

69
সতর্ক করা! বিকল্পটি --ignore-scriptsসমস্ত স্ক্রিপ্টগুলি অক্ষম করে - এমনকি আপনার নির্ভরতা থেকেও। যদি আপনার নির্ভরতাগুলির জন্য স্ক্রিপ্টগুলি চালনার প্রয়োজন হয় যেমন কিছু বাইনারি ইনস্টল করতে পারে তবে সেগুলি ভেঙে / অসম্পূর্ণ হতে পারে।
delbertooo

7
তাহলে নোড_মডিউলগুলি (এবং তাদের সমস্ত স্ক্রিপ্টগুলি) ইনস্টল করার জন্য তবে কী কেবল প্রধান প্যাকেজের স্ক্রিপ্টগুলি উপেক্ষা করার কোনও কৌশল আছে?
ডেরিক

3
কেবল --ignore-scriptsএটিই নয় , বা সম্পর্কিত কনফিগারেশন অপশনটি (যা আমি বিশ্বব্যাপী সেট করেছি) এর অর্থ npm run startহ'ল চুপচাপ কিছুই করতে হবে না এবং সাফল্যের প্রতিবেদন করবে। বিস্ময়াবিষ্ট।
অ্যাশ বার্লিন-টেলর

21

আপনি এনপিএম কনফিগারেশন ফাইলে সেটিংস সক্ষম করতে পারেন।

npm config set ignore-scripts true

দ্রষ্টব্য: এটি সমস্ত এনপিএম প্যাকেজগুলির জন্য স্ক্রিপ্টগুলি অক্ষম করবে।


2
এই উত্তর হওয়া উচিত। এনপিএম ব্লগ পোস্টটি দেখুন: blog.npmjs.org/post/141702881055/…
পিটার ভেন্টার

4

আপনার নিজের লাইব্রেরির জন্য এটি করার জন্য, আমি এর মতো সাধারণ কিছু সুপারিশ করি:

#!/usr/bin/env bash

## this is your postinstall.sh script:

set -e;

if [ "$your_pkg_skip_postinstall" == "yes" ]; then
  echo "skipping your package's postinstall routine.";
  exit 0;
fi

তারপরে আপনার এনপিএম ইনস্টল করুন:

your_pkg_skip_postinstall="yes" npm install

1
ধন্যবাদ! আপনি কেবল নিজের স্ক্রিপ্টটি অক্ষম করার চেষ্টা করছেন তবে সমস্ত নির্ভরতার সমস্ত স্ক্রিপ্ট না থাকলে এটি দুর্দান্ত কাজ করে।
ব্রায়ান নিসলার

ব্রায়াননিসলার ইয়ার আপনাকে খুব স্বাগত জানায়, অন্য লোকদের সাহায্য করতে সর্বদা ভালো লাগে। যাইহোক, আমি মনে করি ডাবল বন্ধনী [[]] বেশিরভাগ ব্যবহারের ক্ষেত্রে একক বন্ধনীর চেয়ে ভাল হতে পারে, এটি নিশ্চিত নয়।
আলেকজান্ডার মিলস

2

আমি আমার প্রকল্পের জন্য পোস্ট ইনস্টল স্ক্রিপ্টটি অক্ষম করতে চেয়েছিলাম কিন্তু আমি যখন চাই তখন আমার প্রকল্পের নির্ভরতার সমস্ত স্ক্রিপ্টগুলি চালিত হোক npm install। এটিই আমি শেষ করেছিলাম।

  1. একটি স্ক্রিপ্ট তৈরি করুন ./scripts/skip.js
if (process.env.SKIP_BUILD) {
    process.exit(0);
} else {
    process.exit(1);
}
  1. আপনার প্যাকেজ.জসন ফাইলে
 "scripts": {
  ...
  "postinstall": "node ./scripts/skip.js || npm run build",
  ...
 }

আপনার প্যাকেজটি তৈরি হতে আটকাতে এখনই পরিবেশের পরিবর্তনশীল SKIP_BUILD = 1 সেট করুন এবং আপনার নির্ভরতা ঠিকঠাক তৈরি করবে

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