Чи існує який-небудь варіант npm для відключення сценарію після встановлення під час встановлення пакета? Або для переписування будь-якого поля з пакета.json?
Чи існує який-небудь варіант npm для відключення сценарію після встановлення під час встановлення пакета? Або для переписування будь-якого поля з пакета.json?
Відповіді:
Відключити лише postinstallсценарії неможливо . Однак ви можете відключити всі сценарії, використовуючи:
$ npm install --ignore-scripts
Як згадувалося в коментарях delbertooo, це також вимикає сценарії залежностей.
--ignore-scriptsвимикає ВСІ сценарії - навіть від ваших залежностей. Якщо вашим залежностям потрібно запустити сценарії, наприклад, встановити деякі двійкові файли, вони можуть порушитися / бути неповними.
--ignore-scriptsі пов'язаний з ним параметр config (який я встановив у всьому світі) також означатиме, що npm run startмовчки нічого не робитимуть і повідомлятимуть про успіх. Дивуйте.
Ви також можете включити настройки у файлі конфігурації npm.
npm config set ignore-scripts true
Примітка. Це вимкне сценарії для всіх пакетів NPM.
Щоб зробити це для власної бібліотеки, я рекомендую щось просте, наприклад:
#!/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
Я хотів вимкнути сценарій після встановлення для свого проекту, але хотів, щоб усі сценарії залежності мого проекту запускалися, коли я це роблю npm install. Це я і закінчила.
./scripts/skip.js if (process.env.SKIP_BUILD) {
process.exit(0);
} else {
process.exit(1);
}
"scripts": {
...
"postinstall": "node ./scripts/skip.js || npm run build",
...
}
тепер просто встановіть змінну середовища SKIP_BUILD = 1, щоб запобігти створенню вашого пакету, і ваші залежності будуть складатись чудово
SKIP_BUILD=1 npm install