Из документов :
Точный порядок выполнения следующий:
[...]
Запустить сценарий preversion . Эти сценарии имеют доступ к старой версии в пакете. json.
Поэтому невозможно легко получить будущую версию в сценарии preversion
, так как он запускается до версия действительно меняется. Вы можете придумать какое-нибудь хакерское решение, например, такое:
"preversion": "mkdir ../ver && node -e \"const p = require('./package.json'); delete p.scripts.preversion; require('fs').writeFileSync('../ver/package.json', JSON.stringify(p), 'utf8')\" && cd ../ver && npm version minor && node -e \"console.log('new version is gonna be',require('./package.json').version);\" && cd -"
, которое в основном копирует файл пакета. json в другой каталог, запускает npm version minor
и печатает новую версию. Проблема в жестком коде npm version minor
, который не даст вам правильного результата при запуске, например, npm version 1.0.1
, и нет способа получить ту же команду, которая запустила этот скрипт (по крайней мере, я не знаю, как это сделать) и запустите его снова, пока он не закончится.
Я не знаю ваших требований, но я бы go со скриптами version
или postversion
, чтобы легко получить новую версию. Или вы можете создать какой-нибудь пользовательский скрипт, который делает то же самое, но генерирует новую версию до того, как все скрипты будут запущены и новая версия будет доступна.