Существует ли какая-либо опция npm для отключения сценария postinstall при установке пакета? Или для перезаписи любого поля из package.json?
Существует ли какая-либо опция npm для отключения сценария postinstall при установке пакета? Или для перезаписи любого поля из package.json?
Ответы:
Невозможно отключить только postinstall
скрипты. Однако вы можете отключить все скрипты, используя:
$ npm install --ignore-scripts
Как упоминал delbertooo в комментариях, это также отключает скрипты зависимостей.
--ignore-scripts
отключает ВСЕ скрипты - даже из ваших зависимостей. Если вашим зависимостям нужно запускать скрипты, например, для установки некоторых двоичных файлов, они могут сломаться / быть неполными.
--ignore-scripts
или связанный с ним параметр конфигурации (который я установил глобально) также будет означать, что npm run start
ничего не будет делать и сообщать об успехе. Поразите.
Вы также можете включить настройки в файле конфигурации npm.
npm config set ignore-scripts true
Примечание. Это отключит сценарии для всех пакетов NPM.
npm run …
- он просто ничего не будет делать без какого-либо предупреждения.
Я хотел отключить сценарий postinstall для своего проекта, но хотел, чтобы все сценарии зависимостей моего проекта запускались, когда я это делаю 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
Чтобы сделать это для вашей собственной библиотеки, я рекомендую что-нибудь простое, например:
#!/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