Документ для npm version
находится на https://docs.npmjs.com/cli/version.
Это говорит (мой акцент):
- Запустите скрипт версии. Эти сценарии имеют доступ к новой версии в package.json (поэтому они могут включать ее, например, в заголовки файлов в сгенерированных файлах) . Опять же, сценарии должны явно добавлять сгенерированные файлы в коммит, используя git add.
Как вы получаете эту версию из package.json. С комбинацией команд оболочки grep, tr, ..
или в переменной? Я пробовал %s
, который используется для git tag
и $npm.version
и $npm_package_version
, но ни один не работал.
Я закончил тем, что использовал это, что хорошо работает:
"script": {
....
"postversion": "version=$(git-semver-tags | head -1); echo \"export const config = { version: '$version' }\" > client/src/app/config-from-npm.ts",
....
}
РЕДАКТИРОВАТЬ обратите внимание, что я изменил вышеприведенное с 'version' на 'postversion', поскольку новый git tag
недоступен до окончания версии, и я изменил на git-semver-tags
, так как git tags
перечисляет их лексически (поэтому 0.0.1 предшествует 0.0.20).
Мое решение показывает, что мне пришлось использовать git-semver-tags
. Вопрос в том, существует ли правильный способ получить версию из package.json, как утверждает документ?
Я чувствую, что документ должен быть обновлен. Я думал, что создам проблему против проекта https://github.com/npm/cli, но нет ссылки на проблемы (по крайней мере, для меня). Это новый репозиторий git после недавнего перехода из другого проекта, так что, возможно, кто-то забыл поставить галочку в этом поле!
(Правка) У меня есть отдельный вопрос о том, как писать файлы .json / .js / .ts из NPM. Как вывести JSON в NPM Script (теперь решено).