Вы можете использовать условные операторы сценария оболочки, основанные на значении переменных среды. Например,
"scripts": {
"test": "jest",
"dev": "if [[ ${ENABLE_SEED} == \"true\" ]]; then echo 'migration' && echo 'seed' && echo 'nodemon'; else echo 'migration' && echo 'nodemon'; fi"
},
npm run dev
:
> if [[ ${ENABLE_SEED} == "true" ]]; then echo 'migration' && echo 'seed' && echo 'nodemon'; else echo 'migration' && echo 'nodemon'; fi
migration
nodemon
Включить начальное число, запустить ENABLE_SEED=true npm run dev
:
> if [[ ${ENABLE_SEED} == "true" ]]; then echo 'migration' && echo 'seed' && echo 'nodemon'; else echo 'migration' && echo 'nodemon'; fi
migration
seed
nodemon
Или вы можете запустить скрипт npm на основе значений переменных, определенных в package.json
:
"scripts": {
"test": "jest",
"ENABLE_SEED": "false",
"dev": "if [[ ${npm_package_scripts_ENABLE_SEED} == \"true\" ]]; then echo 'migration' && echo 'seed' && echo 'nodemon'; else echo 'migration' && echo 'nodemon'; fi"
},
С ENABLE_SEED=false
, Выполнить npm run dev
:
> if [[ ${npm_package_scripts_ENABLE_SEED} == "true" ]]; then echo 'migration' && echo 'seed' && echo 'nodemon'; else echo 'migration' && echo 'nodemon'; fi
migration
nodemon
"scripts": {
"test": "jest",
"ENABLE_SEED": "true",
"dev": "if [[ ${npm_package_scripts_ENABLE_SEED} == \"true\" ]]; then echo 'migration' && echo 'seed' && echo 'nodemon'; else echo 'migration' && echo 'nodemon'; fi"
},
С ENABLE_SEED=true
, выполнить npm run dev
:
> if [[ ${npm_package_scripts_ENABLE_SEED} == "true" ]]; then echo 'migration' && echo 'seed' && echo 'nodemon'; else echo 'migration' && echo 'nodemon'; fi
migration
seed
nodemon
Правило ссылки на переменную, определенную в package.json
, равно npm_package_<namespace>_Your custom variable
.
В этом случае namespace
равно scripts
. Таким образом, мы можем ссылаться на ENABLE_SEED
, используя npm_package_scripts_ENABLE_SEED
.
Если сценарий оболочки становится более сложным, вам лучше извлечь их в файл .sh
.