From 8dfc697638b1dbc1a34d518c70a943d7ac6dbbcc Mon Sep 17 00:00:00 2001 From: Klaus Hartl Date: Thu, 12 Sep 2019 11:48:56 +0200 Subject: [PATCH 1/6] Introduce release-it --- .release-it.json | 5 +++++ package.json | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .release-it.json diff --git a/.release-it.json b/.release-it.json new file mode 100644 index 00000000..d280b4de --- /dev/null +++ b/.release-it.json @@ -0,0 +1,5 @@ +{ + "github": { + "release": true + } +} diff --git a/package.json b/package.json index 94c40b10..89f24948 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,8 @@ ], "scripts": { "test": "grunt test", - "format": "standard --fix && prettier -l --write --single-quote --no-semi '**/*.{html,json,md}' && eslint '**/*.{html,md}' --fix" + "format": "standard --fix && prettier -l --write --single-quote --no-semi '**/*.{html,json,md}' && eslint '**/*.{html,md}' --fix", + "release": "release-it" }, "repository": { "type": "git", @@ -48,6 +49,7 @@ "gzip-js": "0.3.2", "prettier": "1.18.2", "qunit": "2.9.2", + "release-it": "^12.3.6", "rollup": "^1.20.3", "rollup-plugin-filesize": "^6.2.0", "rollup-plugin-license": "^0.12.1", From e1fe249de5912a594fbc1fa1f34c663f630b4984 Mon Sep 17 00:00:00 2001 From: Klaus Hartl Date: Thu, 12 Sep 2019 20:03:30 +0200 Subject: [PATCH 2/6] Add consistent license to all dist variants This will allow for easier, automated bumping during releasing. --- rollup.config.js | 19 ++++++++++++------- src/js.cookie.mjs | 7 ------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/rollup.config.js b/rollup.config.js index 14c4fa8f..80b5879c 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -2,6 +2,14 @@ import { terser } from 'rollup-plugin-terser' import filesize from 'rollup-plugin-filesize' import license from 'rollup-plugin-license' +const licenseBanner = license({ + banner: { + content: + '/*! <%= pkg.name %> v<%= pkg.version %> | <%= pkg.license %> */', + commentStyle: 'none' + } +}) + export default [ { input: 'src/js.cookie.mjs', @@ -21,6 +29,9 @@ export default [ noConflict: true, banner: ';' } + ], + plugins: [ + licenseBanner ] }, { @@ -43,13 +54,7 @@ export default [ ], plugins: [ terser(), - license({ - banner: { - content: - '/*! <%= pkg.name %> v<%= pkg.version %> | <%= pkg.license %> */', - commentStyle: 'none' - } - }), + licenseBanner, // must be applied after terser, otherwise it's being stripped away... filesize() ] } diff --git a/src/js.cookie.mjs b/src/js.cookie.mjs index 77d2550a..02746ea9 100644 --- a/src/js.cookie.mjs +++ b/src/js.cookie.mjs @@ -1,10 +1,3 @@ -/*! - * JavaScript Cookie v2.2.1 - * https://github.com/js-cookie/js-cookie - * - * Copyright 2006, 2015 Klaus Hartl & Fagner Brack - * Released under the MIT license - */ function extend () { var i = 0 var result = {} From 46e50dfbf74b4423e03877985bcb3778a8cd84e3 Mon Sep 17 00:00:00 2001 From: Klaus Hartl Date: Thu, 12 Sep 2019 20:21:19 +0200 Subject: [PATCH 3/6] Add configuration for release-it This configuration supplies publishing to npm along with making a release on GitHub with additional assets to be uploaded (in particular minified versions for both the module and nonmodule variants). --- .release-it.json | 16 +++++++++++++++- package.json | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/.release-it.json b/.release-it.json index d280b4de..97c6bb24 100644 --- a/.release-it.json +++ b/.release-it.json @@ -1,5 +1,19 @@ { + "git": { + "commitMessage": "Craft v${version} release", + "requireCleanWorkingDir": false, + "tagAnnotation": "Release v${version}", + "tagName": "v${version}" + }, "github": { - "release": true + "assets": ["dist/*.mjs", "dist/*.js"], + "draft": true, + "release": true, + "releaseName": "v${version}" + }, + "hooks": { + "after:bump": "npm run dist", + "after:release": "echo Successfully released ${name} v${version} to ${repo.repository}.", + "before:init": "npm test" } } diff --git a/package.json b/package.json index 89f24948..8b88f9ca 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "scripts": { "test": "grunt test", "format": "standard --fix && prettier -l --write --single-quote --no-semi '**/*.{html,json,md}' && eslint '**/*.{html,md}' --fix", + "dist": "rm -rf dist/* && rollup -c", "release": "release-it" }, "repository": { From 21c66c7d5997b60af5762449c86d73d3cc46071b Mon Sep 17 00:00:00 2001 From: Klaus Hartl Date: Fri, 13 Sep 2019 10:41:41 +0200 Subject: [PATCH 4/6] Document the automated releasing approach --- README.md | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 197b2210..6dc5a399 100644 --- a/README.md +++ b/README.md @@ -328,19 +328,21 @@ Check out the [Contributing Guidelines](CONTRIBUTING.md) For vulnerability reports, send an e-mail to `jscookieproject at gmail dot com` -## Manual release steps - -- Increment the "version" attribute of `package.json` -- Increment the version number in the `src/js.cookie.mjs` file -- If `major` bump, update jsDelivr CDN major version link on README -- Commit with the message "Release version x.x.x" -- Create version tag in git -- Create a github release and upload the minified file -- Change the `latest` tag pointer to the latest commit - - `git tag -f latest` - - `git push :refs/tags/latest` - - `git push origin master --tags` -- Release on npm +## Releasing + +We are using [release-it](https://www.npmjs.com/package/release-it) for automated releasing. + +Start a dry run to see what would happen: + +``` +$ npm run release minor -- --dry-run +``` + +Do a real release (publishes both to npm as well as create a new release on GitHub): + +``` +$ npm run release minor +``` ## Supporters From cc6b35c620c6fe5b74af191d7d8203ef0ca00b83 Mon Sep 17 00:00:00 2001 From: Klaus Hartl Date: Fri, 13 Sep 2019 13:18:35 +0200 Subject: [PATCH 5/6] Prevent changelog consisting of commit messages This doesn't seem to provide value. We may have to craft release notes manually for a GitHub release (thus we keep creating the release as a draft). --- .release-it.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.release-it.json b/.release-it.json index 97c6bb24..daa77eee 100644 --- a/.release-it.json +++ b/.release-it.json @@ -1,5 +1,6 @@ { "git": { + "changelog": null, "commitMessage": "Craft v${version} release", "requireCleanWorkingDir": false, "tagAnnotation": "Release v${version}", From a6f7b23224a95b0e36c2a20078271467ee491e52 Mon Sep 17 00:00:00 2001 From: Klaus Hartl Date: Fri, 13 Sep 2019 13:36:56 +0200 Subject: [PATCH 6/6] Add reminders about GitHub draft releases --- .release-it.json | 2 +- README.md | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.release-it.json b/.release-it.json index daa77eee..2b290de5 100644 --- a/.release-it.json +++ b/.release-it.json @@ -14,7 +14,7 @@ }, "hooks": { "after:bump": "npm run dist", - "after:release": "echo Successfully released ${name} v${version} to ${repo.repository}.", + "after:release": "echo Successfully created a release draft v${version} for ${repo.repository}. Please add release notes when necessary and publish it!", "before:init": "npm test" } } diff --git a/README.md b/README.md index 6dc5a399..e014a34a 100644 --- a/README.md +++ b/README.md @@ -344,6 +344,9 @@ Do a real release (publishes both to npm as well as create a new release on GitH $ npm run release minor ``` +_GitHub releases are created as a draft and need to be published manually! +(This is so we are able to craft suitable release notes before publishing.)_ + ## Supporters