Прежде чем сделать небольшой выпуск и пометить его, я хотел бы обновить package.json, чтобы отобразить новую версию программы.
Есть ли способ редактировать файл package.json
автоматически?
Использует ли git pre-release hook
help?
Прежде чем сделать небольшой выпуск и пометить его, я хотел бы обновить package.json, чтобы отобразить новую версию программы.
Есть ли способ редактировать файл package.json
автоматически?
Использует ли git pre-release hook
help?
npm version
, вероятно, правильный ответ. Чтобы дать альтернативу, я рекомендую grunt-bump. Он поддерживается одним из парней из angular.js.
Использование:
grunt bump
>> Version bumped to 0.0.2
grunt bump:patch
>> Version bumped to 0.0.3
grunt bump:minor
>> Version bumped to 0.1.0
grunt bump
>> Version bumped to 0.1.1
grunt bump:major
>> Version bumped to 1.0.0
Если вы используете grunt в любом случае, это может быть самое простое решение.
Правильный ответ
Для этого просто npm version patch
=)
Мой старый ответ
В git
нет оригинала pre-release
. По крайней мере, man githooks
не показывает его.
Если вы используете git-extra
(https://github.com/visionmedia/git-extras), вы можете использовать крюк pre-release
, который реализован им, поскольку вы можно увидеть на https://github.com/visionmedia/git-extras/blob/master/bin/git-release. Требуется только исполняемый файл .git/hook/pre-release.sh
, который редактирует ваш файл package.json
. Копирование, толкание и маркировка будут выполняться командой git release
.
Если вы не используете расширение для git
, вы можете написать оболочку script (я назову ее git-release.sh
), а вы можете добавить ее к git release
с чем-то вроде:
git config --global alias.release '!sh path/to/pre-release.sh $1'
Вы можете использовать git release 0.4
, который будет выполнять path/to/pre-release.sh 0.4
. Ваш script может редактировать package.json
, создать тег и нажать его на сервер.
Это то, что я обычно делаю с моими проектами:
npm version patch
git add *;
git commit -m "Commit message"
git push
npm publish
Первая строка, npm version patch
, увеличит версию патча на 1 (x.x.1 до x.x.2) в package.json
. Затем вы добавляете все файлы, включая package.json
, которые в этот момент были изменены.
Затем, обычные git commit
и git push
, и, наконец, npm publish
, чтобы опубликовать модуль.
Надеюсь, это имеет смысл...
Merc.
Чтобы дать более современный подход.
package.json
"scripts": {
"eslint": "eslint index.js",
"pretest": "npm install",
"test": "npm run eslint",
"preversion": "npm run test",
"version": "",
"postversion": "git push && git push --tags && npm publish"
}
Затем вы запустите его:
npm version minor --force -m "Some message to commit"
Что будет:
... запустить тесты...
измените ваш package.json
на следующую второстепенную версию (например: 1.8.1 до 1.9.0)
нажмите свои изменения
создайте новый релиз тега git и
опубликуйте свой пакет npm.
--force
должен показать, кто является боссом! Шутки в сторону см. https://github.com/npm/npm/issues/8620
В качестве дополнения к npm version
вы можете использовать флаг --no-git-tag-version
если вы хотите повысить версию, но не добавить тег или новый коммит:
npm --no-git-tag-version version patch
Если вы используете пряжу, вы можете использовать
yarn version --patch
Это увеличит версию package.json
по (0.0.x)
, зафиксирует и v0.0.0
его в формате v0.0.0
Точно так же вы можете поднять минорную или мажорную версию, используя --minor
или --major
При нажатии на git убедитесь, что вы также нажимаете на теги --follow-tags
git push --follow-tags
Вы также можете создать скрипт для него
"release-it": "yarn version --patch && git push --follow-tags"
Просто запустите его, введя команду yarn release-it
Я использую лайку и git-branch-is:
По состоянию на хаски v1+:
// package.json
{
"husky": {
"hooks": {
"post-merge": "(git-branch-is master && npm version minor ||
(git-branch-is dev && npm --no-git-tag-version version patch)",
}
}
}
До хаски V1:
"scripts": {
...
"postmerge": "(git-branch-is master && npm version minor ||
(git-branch-is dev && npm --no-git-tag-version version patch)",
...
},
Подробнее о версии npm
Webpack или Vue.js
Если вы используете webpack или Vue.js, вы можете отобразить это в пользовательском интерфейсе, используя версию с автоматическим внедрением - плагин Webpack
NUXT
В nuxt.config.js
:
var WebpackAutoInject = require('webpack-auto-inject-version');
module.exports = {
build: {
plugins: [
new WebpackAutoInject({
// options
// example:
components: {
InjectAsComment: false
},
}),
]
},
}
Внутри template
, например, в нижнем колонтитуле:
<p> All rights reserved © 2018 [v[AIV]{version}[/AIV]]</p>
Я хочу внести ясность в ответы на этот вопрос.
Даже при том, что здесь есть некоторые ответы, которые правильно решают проблему и предлагают решение, они не являются правильными. Правильный ответ на этот вопрос - использовать npm version
Есть ли способ отредактировать файл package.json автоматически?
Да, что вы можете сделать, чтобы это произошло, - это запустить команду npm version
когда это необходимо, вы можете прочитать об этом здесь npm version, но базовое использование будет npm version patch
и это добавит 3-й порядок цифр в ваш package.json
версия package.json
(1.0. X)
Поможет ли использование git pre-release hook?
Вы можете настроить запуск команды npm version
на npm version
перед выпуском, как вам нужно, но это зависит от того, что вам нужно или нет в вашем канале CD/CI, но без команды npm version
ловушку git pre-release
ничего не могу сделать "легко" с package.json
Причина, по которой npm version
является правильным ответом, заключается в следующем:
package.json
он использует npm
если он использует npm
него есть доступ к npm scripts
.npm scripts
него есть доступ к команде npm version
.Другие ответы, в которых предлагаются другие инструменты, неверны.
gulp-bump
работает, но требует еще один дополнительный пакет, который может создать проблемы в долгосрочной перспективе (пункт 3 моего ответа)
grunt-bump
работает, но требует еще один дополнительный пакет, который может создать проблемы в долгосрочной перспективе (пункт 3 моего ответа)
Во-первых, вам нужно понять правила обновления номера версии. Вы можете прочитать больше о семантической версии здесь.
Каждая версия будет иметь версию XYZ, где она определяется для различных целей, как показано ниже.
Чтобы запустить сценарии, вы можете определить это в вашем package.json.
"script": {
"buildmajor": "npm version major && ng build --prod",
"buildminor": "npm version minor && ng build --prod",
"buildpatch": "npm version patch && ng build --prod"
}
В вашем терминале вам просто нужно запустить npm в соответствии с вашими потребностями, такими как
npm run buildpatch
Если запустить его в git repo, по умолчанию используется git-tag-версия true, и если вы не хотите этого делать, вы можете добавить в свои сценарии следующую команду:
--no-git-tag-version
например: "npm --no-git-tag-version version major && ng build --prod"