npm: paket için postinstall komut dosyasını devre dışı bırak


Yanıtlar:


267

Yalnızca postinstallkomut dosyalarını devre dışı bırakmak mümkün değildir . Ancak, tüm komut dosyalarını aşağıdakileri kullanarak devre dışı bırakabilirsiniz:

$ npm install --ignore-scripts

Delbertooo'nun yorumlarda belirttiği gibi, bu da bağımlılıkların senaryolarını devre dışı bırakır.


2
Teşekkürler. Tam da ihtiyacım olan şey bu. Bu tür seçenekleri nerede bulabilirim? Bu, 'npm yardım yüklemesi', 'npm yardım yapılandırması' ve 'npm yardım komut dosyalarında' açıklanmamıştır.
farwayer


69
Dikkat! Bu seçenek --ignore-scriptsTÜM komut dosyalarını (bağımlılıklarınızdan bile) devre dışı bırakır. Bağımlılıklarınızın, örneğin bazı ikili dosyaları yüklemek için komut dosyaları çalıştırması gerekiyorsa, bunlar kırılabilir / eksik olabilir.
delbertooo

7
Öyleyse node_modules (ve tüm scriptlerini) kurmak ama sadece ana paketin scriptlerini göz ardı etmek için bir teknik var mı?
Derrick

3
Sadece bu değil --ignore-scripts, ya da (global olarak ayarladığım) ilgili yapılandırma seçeneği de npm run startsessizce hiçbir şey yapmayacak ve başarıyı rapor edecek anlamına gelecektir. Amaze.
Ash Berlin-Taylor

21

Ayarları npm yapılandırma dosyasında da etkinleştirebilirsiniz.

npm config set ignore-scripts true

Not: Bu, tüm NPM paketleri için komut dosyalarını devre dışı bırakır.


2
Cevap bu olmalı. Bkz. Npm blog yazısı: blog.npmjs.org/post/141702881055/…
Pieter Venter

El ile yürütme yeteneğini de devre dışı bıraktığını unutmayın npm run …- herhangi bir uyarı yapmadan hiçbir şey yapmaz.
CodeManX

4

Bunu kendi kitaplığınız için yapmak için aşağıdaki gibi basit bir şey öneriyorum:

#!/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

sonra npm kurulumunuzu yapın:

your_pkg_skip_postinstall="yes" npm install

1
Teşekkürler! Sadece kendi komut dosyanızı devre dışı bırakmaya çalışıyorsanız, ancak tüm bağımlılıklarda TÜM komut dosyalarını çalıştırmıyorsanız bu harika çalışır.
Brian Neisler

@BrianNeisler yer çok hoş geldiniz, diğer insanlara yardım etmek her zaman iyi hissettirir. Bu arada, bence çift parantez [[]] çoğu kullanım durumunda tek parantezden daha iyi olabilir, tho emin değilim.
Alexander Mills

2

Projem için postinstall komut dosyasını devre dışı bırakmak istedim, ancak projemin bağımlılıklarının tüm komut dosyalarının çalıştığımda çalışmasını istedim npm install. Sonunda bunu yaptım.

  1. Senaryo oluştur ./scripts/skip.js
if (process.env.SKIP_BUILD) {
    process.exit(0);
} else {
    process.exit(1);
}
  1. Package.json dosyanızda
 "scripts": {
  ...
  "postinstall": "node ./scripts/skip.js || npm run build",
  ...
 }

şimdi paketinizin oluşturulmasını önlemek için SKIP_BUILD = 1 ortam değişkenini ayarlamanız yeterlidir.

SKIP_BUILD=1 npm install
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.