npm: पैकेज के लिए पोस्ट-स्क्रिप्ट को अक्षम करें


142

क्या यह कोई npm विकल्प मौजूद है जो कि अधिष्ठापन के दौरान पोस्ट स्क्रिप्ट को निष्क्रिय करने के लिए है? या package.json से किसी भी क्षेत्र को फिर से लिखने के लिए?


सवाल बहुत स्पष्ट है लेकिन ... क्या किसी भी तरह से यह आपका अंतिम लक्ष्य है? github.com/zloirock/core-js#postinstall-message ;-)
cony

जवाबों:


267

केवल postinstallस्क्रिप्ट को अक्षम करना संभव नहीं है । हालाँकि, आप सभी लिपियों को अक्षम कर सकते हैं:

$ npm install --ignore-scripts

जैसा कि डेलबर्टो ने टिप्पणियों में उल्लेख किया है, यह भी निर्भरता की लिपियों को निष्क्रिय करता है।


2
धन्यवाद। यह ठीक वैसा ही है जैसा मुझे चाहिए। मुझे ऐसे विकल्प कहां मिल सकते हैं? यह 'एनपीएम हेल्प इनस्टॉल', 'एनपीएम हेल्प कॉन्फिग' और 'एनपीएम हेल्प स्क्रिप्ट्स' में वर्णित नहीं है।
farwayer

3
मैंने सीधे कोड की जाँच की: github.com/npm/npm/blob/master/lib/build.js#L179
Gergo Erdosi

69
सावधान! विकल्प --ignore-scriptsआपकी स्क्रिप्ट पर निर्भर करता है - यहां तक ​​कि आपकी निर्भरता से भी। यदि आपके आश्रितों को स्क्रिप्ट्स को चलाने की आवश्यकता है, उदाहरण के लिए कुछ बायनेरिज़ स्थापित करें जो वे टूट सकते हैं / अपूर्ण हो सकते हैं।
डेलबर्टो

7
तो वहाँ एक तकनीक तो नोड_मॉड्यूल्स (और उनकी सभी लिपियों) को स्थापित करने के लिए है लेकिन केवल मुख्य पैकेज की लिपियों को अनदेखा करें?
डेरिक

3
इतना ही नहीं, लेकिन --ignore-scripts, या संबद्ध कॉन्फ़िगरेशन विकल्प (जो मैंने विश्व स्तर पर सेट किया है) का मतलब यह भी npm run startहोगा कि चुपचाप कुछ भी नहीं करेगा और सफलता की रिपोर्ट करेगा। विस्मित करना।
राख बर्लिन-टेलर

21

आप npm कॉन्फ़िगरेशन फ़ाइल में सेटिंग्स को भी सक्षम कर सकते हैं।

npm config set ignore-scripts true

नोट: यह सभी एनपीएम पैकेज के लिए स्क्रिप्ट को निष्क्रिय कर देगा।


2
इसका उत्तर होना चाहिए। Npm
पीटर

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

तो अपने npm के साथ स्थापित करें:

your_pkg_skip_postinstall="yes" npm install

1
धन्यवाद! यह बहुत अच्छा काम करता है यदि आप अपनी स्वयं की स्क्रिप्ट को अक्षम करने की कोशिश कर रहे हैं, लेकिन सभी निर्भरताओं में सभी स्क्रिप्ट नहीं।
ब्रायन नीसलर

@BrianNeisler बहुत स्वागत करते हैं, हमेशा दूसरे लोगों की मदद करना अच्छा लगता है। वैसे, मुझे लगता है कि डबल ब्रैकेट [[]] अधिकांश उपयोग के मामलों के लिए एकल ब्रैकेट से बेहतर हो सकता है, न कि निश्चित रूप से।
अलेक्जेंडर मिल्स

2

मैं अपनी परियोजना के लिए स्थापना रद्द स्क्रिप्ट को निष्क्रिय करना चाहता था, लेकिन चाहता था कि जब मैं करूँ तो मेरी परियोजना की निर्भरता की सभी लिपियाँ चलें npm install। यह वही है जो मैंने किया।

  1. एक स्क्रिप्ट बनाएँ ./scripts/skip.js
if (process.env.SKIP_BUILD) {
    process.exit(0);
} else {
    process.exit(1);
}
  1. अपने package.json फ़ाइल में
 "scripts": {
  ...
  "postinstall": "node ./scripts/skip.js || npm run build",
  ...
 }

अब अपने पैकेज को बनाने से रोकने के लिए बस पर्यावरण चर SKIP_BUILD = 1 सेट करें और आपकी निर्भरता ठीक-ठाक बनेगी

SKIP_BUILD=1 npm install
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.