У меня есть пакет npm, который управляет моим репозиторием github, и есть сценарии, которые создают мой публикуемый пакет npm.Из-за характера пакета опубликованный пакет npm (дистрибутив) не может совпадать с пакетом моего репозитория (источник).Я приближаюсь к разработке, ориентированной на тестирование, и к непрерывной интеграции, но изучаю ее постепенно.Вот текущий поток, и он пока работает без нареканий:
Из командной строки:
> npm run patch
- работает
npm version patch
- Это вызывает источник
preversion
, - очищает дистрибутив:
npm run clean
- запускает тесты:
npm test
- Это вызывает
pretest
, - Запускает тесты дистрибутива
- Ошибка: Ошибки и процесс завершается
- Успех: Ветвь завершена,
- вызывает источник
postversion
: git push
все коммиты и теги
- запускает дистрибутив
npm version patch
- вызывает дистрибутив
postversion
(Источник) package.json
{
...,
"scripts": {
"patch": "npm version patch && cd dist && npm version patch",
"minor": "npm version minor && cd dist && npm version minor",
"major": "npm version major && cd dist && npm version major",
"preversion": "npm run clean && npm test",
"clean": /* clean commands */,
"pretest": "npm run build",
"test": "cd dist && npm test",
"postversion": "git push origin --all && git push origin --tags"
},
...
}
(Distro) package.json
{
...,
"scripts": {
"test": /* test commands */,
"postversion": "npm publish"
},
...
}
Я бы хотел иметь более простой интерфейс.Как видите, мне нужно npm run <major|minor|patch>
.Вместо этого я бы хотел npm run dist
с аргументом командной строки, передаваемым в обе версии npm.
Пример:
> npm run dist patch
--------------------
<<< npm version patch
<<< cd dist && npm version patch
> npm run dist major
--------------------
<<< npm version major
<<< cd dist && npm version major
Можно ли передавать аргументы командной строки вниз по дереву?Или, что еще лучше, я могу распределить аргумент командной строки по командам в одной записи сценариев?Я легко могу добавить запись в scripts
, которая принимает аргумент командной строки, но, похоже, не может понять, как разделить этот аргумент более одного раза при написании отдельного сценария .js
.