浏览代码

Merge branch 'master' into t/ckeditor5-ui/402

Aleksander Nowodzinski 7 年之前
父节点
当前提交
224aa98914

+ 70 - 0
CHANGELOG.md

@@ -1,6 +1,76 @@
 Changelog
 =========
 
+## [10.1.0](https://github.com/ckeditor/ckeditor5/compare/v10.0.1...v10.1.0) (2018-06-21)
+
+This is a minor release that introduces many bug fixes and new features. Most notable ones are the table plugin and support for inserting soft breaks with <kbd>Shift</kbd>+<kbd>Enter</kbd>.
+
+You can read more in the [blog post](https://ckeditor.com/blog/CKEditor-5-v10.1.0-released/).
+
+### Dependencies
+
+New packages:
+
+* [@ckeditor/ckeditor5-table](https://www.npmjs.com/package/@ckeditor/ckeditor5-table): [v10.0.0](https://github.com/ckeditor/ckeditor5-table/releases/tag/v10.0.0)
+
+Major releases (contain breaking changes):
+
+* [@ckeditor/ckeditor5-list](https://www.npmjs.com/package/@ckeditor/ckeditor5-list): v10.0.0 => [v11.0.0](https://github.com/ckeditor/ckeditor5-list/releases/tag/v11.0.0)
+
+Minor releases:
+
+* [@ckeditor/ckeditor5-build-balloon](https://www.npmjs.com/package/@ckeditor/ckeditor5-build-balloon): v10.0.1 => [v10.1.0](https://github.com/ckeditor/ckeditor5-build-balloon/releases/tag/v10.1.0)
+* [@ckeditor/ckeditor5-build-classic](https://www.npmjs.com/package/@ckeditor/ckeditor5-build-classic): v10.0.1 => [v10.1.0](https://github.com/ckeditor/ckeditor5-build-classic/releases/tag/v10.1.0)
+* [@ckeditor/ckeditor5-build-decoupled-document](https://www.npmjs.com/package/@ckeditor/ckeditor5-build-decoupled-document): v10.0.1 => [v10.1.0](https://github.com/ckeditor/ckeditor5-build-decoupled-document/releases/tag/v10.1.0)
+* [@ckeditor/ckeditor5-build-inline](https://www.npmjs.com/package/@ckeditor/ckeditor5-build-inline): v10.0.1 => [v10.1.0](https://github.com/ckeditor/ckeditor5-build-inline/releases/tag/v10.1.0)
+* [@ckeditor/ckeditor5-core](https://www.npmjs.com/package/@ckeditor/ckeditor5-core): v10.0.0 => [v10.1.0](https://github.com/ckeditor/ckeditor5-core/releases/tag/v10.1.0)
+* [@ckeditor/ckeditor5-engine](https://www.npmjs.com/package/@ckeditor/ckeditor5-engine): v10.0.0 => [v10.1.0](https://github.com/ckeditor/ckeditor5-engine/releases/tag/v10.1.0)
+* [@ckeditor/ckeditor5-enter](https://www.npmjs.com/package/@ckeditor/ckeditor5-enter): v10.0.0 => [v10.1.0](https://github.com/ckeditor/ckeditor5-enter/releases/tag/v10.1.0)
+* [@ckeditor/ckeditor5-essentials](https://www.npmjs.com/package/@ckeditor/ckeditor5-essentials): v10.0.0 => [v10.1.0](https://github.com/ckeditor/ckeditor5-essentials/releases/tag/v10.1.0)
+* [@ckeditor/ckeditor5-image](https://www.npmjs.com/package/@ckeditor/ckeditor5-image): v10.0.0 => [v10.1.0](https://github.com/ckeditor/ckeditor5-image/releases/tag/v10.1.0)
+* [@ckeditor/ckeditor5-theme-lark](https://www.npmjs.com/package/@ckeditor/ckeditor5-theme-lark): v10.0.0 => [v10.1.0](https://github.com/ckeditor/ckeditor5-theme-lark/releases/tag/v10.1.0)
+* [@ckeditor/ckeditor5-ui](https://www.npmjs.com/package/@ckeditor/ckeditor5-ui): v10.0.0 => [v10.1.0](https://github.com/ckeditor/ckeditor5-ui/releases/tag/v10.1.0)
+* [@ckeditor/ckeditor5-upload](https://www.npmjs.com/package/@ckeditor/ckeditor5-upload): v10.0.0 => [v10.1.0](https://github.com/ckeditor/ckeditor5-upload/releases/tag/v10.1.0)
+* [@ckeditor/ckeditor5-utils](https://www.npmjs.com/package/@ckeditor/ckeditor5-utils): v10.0.0 => [v10.1.0](https://github.com/ckeditor/ckeditor5-utils/releases/tag/v10.1.0)
+* [@ckeditor/ckeditor5-widget](https://www.npmjs.com/package/@ckeditor/ckeditor5-widget): v10.0.0 => [v10.1.0](https://github.com/ckeditor/ckeditor5-widget/releases/tag/v10.1.0)
+
+Patch releases (bug fixes, internal changes):
+
+* [@ckeditor/ckeditor5-adapter-ckfinder](https://www.npmjs.com/package/@ckeditor/ckeditor5-adapter-ckfinder): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-adapter-ckfinder/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-alignment](https://www.npmjs.com/package/@ckeditor/ckeditor5-alignment): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-alignment/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-autoformat](https://www.npmjs.com/package/@ckeditor/ckeditor5-autoformat): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-autoformat/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-basic-styles](https://www.npmjs.com/package/@ckeditor/ckeditor5-basic-styles): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-basic-styles/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-block-quote](https://www.npmjs.com/package/@ckeditor/ckeditor5-block-quote): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-block-quote/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-clipboard](https://www.npmjs.com/package/@ckeditor/ckeditor5-clipboard): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-clipboard/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-cloud-services](https://www.npmjs.com/package/@ckeditor/ckeditor5-cloud-services): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-cloud-services/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-easy-image](https://www.npmjs.com/package/@ckeditor/ckeditor5-easy-image): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-easy-image/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-editor-balloon](https://www.npmjs.com/package/@ckeditor/ckeditor5-editor-balloon): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-editor-balloon/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-editor-classic](https://www.npmjs.com/package/@ckeditor/ckeditor5-editor-classic): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-editor-classic/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-editor-decoupled](https://www.npmjs.com/package/@ckeditor/ckeditor5-editor-decoupled): v10.0.1 => [v10.0.2](https://github.com/ckeditor/ckeditor5-editor-decoupled/releases/tag/v10.0.2)
+* [@ckeditor/ckeditor5-editor-inline](https://www.npmjs.com/package/@ckeditor/ckeditor5-editor-inline): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-editor-inline/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-font](https://www.npmjs.com/package/@ckeditor/ckeditor5-font): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-font/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-heading](https://www.npmjs.com/package/@ckeditor/ckeditor5-heading): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-heading/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-highlight](https://www.npmjs.com/package/@ckeditor/ckeditor5-highlight): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-highlight/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-link](https://www.npmjs.com/package/@ckeditor/ckeditor5-link): v10.0.1 => [v10.0.2](https://github.com/ckeditor/ckeditor5-link/releases/tag/v10.0.2)
+* [@ckeditor/ckeditor5-markdown-gfm](https://www.npmjs.com/package/@ckeditor/ckeditor5-markdown-gfm): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-markdown-gfm/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-paragraph](https://www.npmjs.com/package/@ckeditor/ckeditor5-paragraph): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-paragraph/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-typing](https://www.npmjs.com/package/@ckeditor/ckeditor5-typing): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-typing/releases/tag/v10.0.1)
+* [@ckeditor/ckeditor5-undo](https://www.npmjs.com/package/@ckeditor/ckeditor5-undo): v10.0.0 => [v10.0.1](https://github.com/ckeditor/ckeditor5-undo/releases/tag/v10.0.1)
+
+### Features
+
+Besides new features introduced by the dependencies, this version also introduces the following features:
+
+* Introduced the `@ckeditor/ckeditor5-table` package. ([e4b9a72](https://github.com/ckeditor/ckeditor5/commit/e4b9a72))
+
+### Bug fixes
+
+Besides changes in the dependencies, this version also contains the following bug fixes:
+
+* The editor buttons in the document editor guide should not wrap to the next line. Closes [#1077](https://github.com/ckeditor/ckeditor5/issues/1077). ([61c6ad6](https://github.com/ckeditor/ckeditor5/commit/61c6ad6))
+* The table dropdown in the document editor snippet should not be cut off. Closes [#1069](https://github.com/ckeditor/ckeditor5/issues/1069). ([bed8e70](https://github.com/ckeditor/ckeditor5/commit/bed8e70))
+
+
 ## [10.0.1](https://github.com/ckeditor/ckeditor5/compare/v10.0.0...v10.0.1) (2018-05-22)
 
 ## Release notes

+ 1 - 1
README.md

@@ -132,11 +132,11 @@ Read more on the [Support](https://docs.ckeditor.com/ckeditor5/latest/framework/
 
 The five latest releases:
 
+* [Introduced the table feature and soft line-breaks – CKEditor 5 v10.1.0](https://github.com/ckeditor/ckeditor5/releases/tag/v10.1.0) (<time datetime="2018-06-21T12:00:00Z"><i>June 21, 2018</i></time>)
 * [Security release – CKEditor 5 v10.0.1](https://github.com/ckeditor/ckeditor5/releases/tag/v10.0.1) (<time datetime="2018-05-22T12:04:45Z"><i>May 22, 2018</i></time>)
 * [First stable release – CKEditor 5 v10.0.0](https://github.com/ckeditor/ckeditor5/releases/tag/v10.0.0) (<time datetime="2018-04-25T14:12:00Z"><i>Apr 25, 2018</i></time>)
 * [Beta release of CKEditor 5 v1.0.0](https://ckeditor.com/blog/CKEditor-5-v1.0.0-beta-released/) (<time datetime="2018-04-10T12:12:00Z"><i>Apr 10, 2018</i></time>)
 * [Second alpha release of CKEditor 5 v1.0.0](https://ckeditor.com/blog/Second-alpha-release-of-CKEditor-5-v1.0.0/) (<time datetime="2017-11-14T12:52:18Z"><i>Nov 14, 2017</i></time>)
-* [First alpha release of CKEditor 5 v1.0.0](https://ckeditor.com/blog/First-alpha-release-of-CKEditor-5-v1.0.0/) (<time datetime="2017-10-03T13:09:29Z"><i>Oct 3, 2017</i></time>)
 
 For more CKEditor 5 release blog posts [browse the CKEditor blog](https://ckeditor.com/blog/?category=releases&tags=CKEditor-5).
 

+ 39 - 38
package.json

@@ -1,6 +1,6 @@
 {
   "name": "ckeditor5",
-  "version": "10.0.1",
+  "version": "10.1.0",
   "description": "The development environment of CKEditor 5.",
   "keywords": [
     "CKEditor",
@@ -24,45 +24,45 @@
     "framework"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-adapter-ckfinder": "^10.0.0",
-    "@ckeditor/ckeditor5-alignment": "^10.0.0",
-    "@ckeditor/ckeditor5-autoformat": "^10.0.0",
-    "@ckeditor/ckeditor5-basic-styles": "^10.0.0",
-    "@ckeditor/ckeditor5-block-quote": "^10.0.0",
-    "@ckeditor/ckeditor5-build-balloon": "^10.0.1",
-    "@ckeditor/ckeditor5-build-classic": "^10.0.1",
-    "@ckeditor/ckeditor5-build-decoupled-document": "^10.0.1",
-    "@ckeditor/ckeditor5-build-inline": "^10.0.1",
-    "@ckeditor/ckeditor5-clipboard": "^10.0.0",
-    "@ckeditor/ckeditor5-cloud-services": "^10.0.0",
-    "@ckeditor/ckeditor5-core": "^10.0.0",
-    "@ckeditor/ckeditor5-easy-image": "^10.0.0",
-    "@ckeditor/ckeditor5-editor-balloon": "^10.0.0",
-    "@ckeditor/ckeditor5-editor-classic": "^10.0.0",
-    "@ckeditor/ckeditor5-editor-decoupled": "^10.0.1",
-    "@ckeditor/ckeditor5-editor-inline": "^10.0.0",
-    "@ckeditor/ckeditor5-engine": "^10.0.0",
-    "@ckeditor/ckeditor5-enter": "^10.0.0",
-    "@ckeditor/ckeditor5-essentials": "^10.0.0",
-    "@ckeditor/ckeditor5-font": "^10.0.0",
-    "@ckeditor/ckeditor5-heading": "^10.0.0",
-    "@ckeditor/ckeditor5-highlight": "^10.0.0",
-    "@ckeditor/ckeditor5-image": "^10.0.0",
-    "@ckeditor/ckeditor5-link": "^10.0.1",
-    "@ckeditor/ckeditor5-list": "^10.0.0",
-    "@ckeditor/ckeditor5-markdown-gfm": "^10.0.0",
-    "@ckeditor/ckeditor5-paragraph": "^10.0.0",
-    "@ckeditor/ckeditor5-table": "^0.0.1",
-    "@ckeditor/ckeditor5-theme-lark": "^10.0.0",
-    "@ckeditor/ckeditor5-typing": "^10.0.0",
-    "@ckeditor/ckeditor5-ui": "^10.0.0",
-    "@ckeditor/ckeditor5-undo": "^10.0.0",
-    "@ckeditor/ckeditor5-upload": "^10.0.0",
-    "@ckeditor/ckeditor5-utils": "^10.0.0",
-    "@ckeditor/ckeditor5-widget": "^10.0.0"
+    "@ckeditor/ckeditor5-adapter-ckfinder": "v10.0.1",
+    "@ckeditor/ckeditor5-alignment": "v10.0.1",
+    "@ckeditor/ckeditor5-autoformat": "v10.0.1",
+    "@ckeditor/ckeditor5-basic-styles": "v10.0.1",
+    "@ckeditor/ckeditor5-block-quote": "v10.0.1",
+    "@ckeditor/ckeditor5-build-balloon": "v10.1.0",
+    "@ckeditor/ckeditor5-build-classic": "v10.1.0",
+    "@ckeditor/ckeditor5-build-decoupled-document": "v10.1.0",
+    "@ckeditor/ckeditor5-build-inline": "v10.1.0",
+    "@ckeditor/ckeditor5-clipboard": "v10.0.1",
+    "@ckeditor/ckeditor5-cloud-services": "v10.0.1",
+    "@ckeditor/ckeditor5-core": "v10.1.0",
+    "@ckeditor/ckeditor5-easy-image": "v10.0.1",
+    "@ckeditor/ckeditor5-editor-balloon": "v10.0.1",
+    "@ckeditor/ckeditor5-editor-classic": "v10.0.1",
+    "@ckeditor/ckeditor5-editor-decoupled": "v10.0.2",
+    "@ckeditor/ckeditor5-editor-inline": "v10.0.1",
+    "@ckeditor/ckeditor5-engine": "v10.1.0",
+    "@ckeditor/ckeditor5-enter": "v10.1.0",
+    "@ckeditor/ckeditor5-essentials": "v10.1.0",
+    "@ckeditor/ckeditor5-font": "v10.0.1",
+    "@ckeditor/ckeditor5-heading": "v10.0.1",
+    "@ckeditor/ckeditor5-highlight": "v10.0.1",
+    "@ckeditor/ckeditor5-image": "v10.1.0",
+    "@ckeditor/ckeditor5-link": "v10.0.2",
+    "@ckeditor/ckeditor5-list": "v11.0.0",
+    "@ckeditor/ckeditor5-markdown-gfm": "v10.0.1",
+    "@ckeditor/ckeditor5-paragraph": "v10.0.1",
+    "@ckeditor/ckeditor5-table": "v10.0.0",
+    "@ckeditor/ckeditor5-theme-lark": "v10.1.0",
+    "@ckeditor/ckeditor5-typing": "v10.0.1",
+    "@ckeditor/ckeditor5-ui": "v10.1.0",
+    "@ckeditor/ckeditor5-undo": "v10.0.1",
+    "@ckeditor/ckeditor5-upload": "v10.0.1",
+    "@ckeditor/ckeditor5-utils": "v10.1.0",
+    "@ckeditor/ckeditor5-widget": "v10.1.0"
   },
   "devDependencies": {
-    "@ckeditor/ckeditor5-collaboration": "^10.0.0",
+    "@ckeditor/ckeditor5-collaboration": "^10.0.1",
     "@ckeditor/ckeditor5-dev-docs": "^9.0.0",
     "@ckeditor/ckeditor5-dev-env": "^9.0.0",
     "@ckeditor/ckeditor5-dev-tests": "^11.0.0",
@@ -111,6 +111,7 @@
     "translations:download": "ckeditor5-dev-env-translations download",
     "translations:upload": "ckeditor5-dev-env-translations upload",
     "changelog": "node ./scripts/release/changelog.js",
+    "release": "bash ./scripts/release-ckeditor5.sh",
     "release:dependencies": "node ./scripts/release/release-dependencies.js",
     "switch-to-dev-dev": "sh ./scripts/switch-to-dev-dev.sh"
   },

+ 44 - 0
scripts/release-ckeditor5.sh

@@ -0,0 +1,44 @@
+#!/bin/sh
+
+# @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+# For licensing, see LICENSE.md.
+
+set -e
+
+read -p "Did you update the \"Releases\" section in README.md? " -n 1 -r
+echo ""
+
+if [[ $REPLY =~ ^[Yy]$ ]]
+then
+	# Release the CKEditor5 repository.
+	node ./scripts/release/release-ckeditor5.js
+
+	# Update the `stable` branch in the ckeditor5 repository.
+	git checkout stable && git merge master && git checkout master
+
+	# Add `stable` branches in all repos which don't have them yet.
+	mgit exec 'git checkout -b stable 2> /dev/null && git push origin stable && git checkout master'
+
+	# Update all `stable` branches in all packages.
+	mgit exec 'git checkout stable && git merge master && git checkout master'
+
+	# Make sure that `mgit.json` for `stable` and `master` branches is correct.
+	# `stable` branch.
+	git checkout stable && \
+	node ./scripts/release/update-mgit-branches stable && \
+	git commit -a -m "Internal: Use stable branches. [skip ci]".
+
+	# `master` branch.
+	git checkout master && \
+	git merge stable && \
+	node ./scripts/release/update-mgit-branches master && \
+	git commit -a -m "Internal: Use master branches. [skip ci]"
+
+	# Push the `stable` branches.
+	git push origin stable master && \
+	mgit exec 'git push origin stable'
+
+	echo "Success! 🎂"
+else
+	echo "Update the \"Releases\" section in README.md before starting the release process."
+fi

+ 132 - 0
scripts/release/release-ckeditor5.js

@@ -0,0 +1,132 @@
+#!/usr/bin/env node
+
+/**
+ * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+/* eslint-env node */
+
+'use strict';
+
+const path = require( 'path' );
+const { tools, logger } = require( '@ckeditor/ckeditor5-dev-utils' );
+const versionUtils = require( '@ckeditor/ckeditor5-dev-env/lib/release-tools/utils/versions' );
+const cli = require( '@ckeditor/ckeditor5-dev-env/lib/release-tools/utils/cli' );
+const createGithubRelease = require( '@ckeditor/ckeditor5-dev-env/lib/release-tools/utils/creategithubrelease' );
+const validatePackageToRelease = require( '@ckeditor/ckeditor5-dev-env/lib/release-tools/utils/validatepackagetorelease' );
+const { getChangesForVersion } = require( '@ckeditor/ckeditor5-dev-env/lib/release-tools/utils/changelog' );
+
+const log = logger();
+const cke5Path = path.resolve( __dirname, '..', '..' );
+const packageJsonPath = path.resolve( cke5Path, 'package.json' );
+const templatePath = path.resolve( cke5Path, 'scripts', 'release', 'template' );
+const packageJsonTemplatePath = path.resolve( templatePath, 'package.json' );
+const packageJsonTemplateCopy = require( packageJsonTemplatePath );
+
+// That files will be copied from source to template directory and will be released too.
+const additionalFiles = [
+	'CHANGELOG.md',
+	'LICENSE.md',
+	'README.md'
+];
+
+cli.provideToken()
+	.then( token => {
+		const gitVersion = versionUtils.getLastTagFromGit();
+		const changelogVersion = versionUtils.getLastFromChangelog();
+
+		log.info( 'Checking whether there is anything to release...' );
+
+		// If the last tag is equal to version saved in changelog, we don't have new version for release.
+		if ( gitVersion === changelogVersion ) {
+			return reject( 'Before starting the release process, you should generate the changelog.' );
+		}
+
+		const releaseDescription = getChangesForVersion( changelogVersion );
+
+		log.info( 'Validating the repository for the release...' );
+
+		const errors = validatePackageToRelease( {
+			version: changelogVersion,
+			changes: releaseDescription
+		} );
+
+		// Abort due to errors during validation.
+		if ( errors.length ) {
+			const log = logger();
+
+			log.error( 'Unexpected errors occured:' );
+			errors.map( err => '* ' + err ).forEach( log.error.bind( log ) );
+
+			return reject( 'Releasing has been aborted due to errors.' );
+		}
+
+		log.info( 'Bumping the version...' );
+
+		// Bump the version.
+		tools.shExec( `npm version ${ changelogVersion } --message "Release: v${ changelogVersion }."`, { verbosity: 'error' } );
+
+		tools.shExec( `git push origin master v${ changelogVersion }` );
+
+		const packageJson = require( packageJsonPath );
+
+		log.info( 'Copying the package.json...' );
+
+		// Update the template of `package.json`. We will use values from source `package.json`
+		// but only these ones which are defined in the template.
+		tools.updateJSONFile( packageJsonTemplatePath, jsonFile => {
+			for ( const property of Object.keys( jsonFile ) ) {
+				// If the `property` is set in the template, leave it.
+				if ( jsonFile[ property ] ) {
+					continue;
+				}
+
+				// Copy value from original package.json file.
+				jsonFile[ property ] = packageJson[ property ];
+			}
+
+			return jsonFile;
+		} );
+
+		// Copy additional files.
+		for ( const file of additionalFiles ) {
+			tools.shExec( `cp ${ path.resolve( cke5Path, file ) } ${ path.resolve( templatePath, file ) }` );
+		}
+
+		log.info( 'Publishing on npm...' );
+
+		// Publish the package on npm.
+		tools.shExec( `cd ${ templatePath } && npm publish && cd ${ cke5Path }` );
+
+		// Remove files that were copy.
+		for ( const file of additionalFiles ) {
+			tools.shExec( `rm ${ path.resolve( templatePath, file ) }` );
+		}
+
+		log.info( 'Creating a release on GitHub...' );
+
+		// Create a release on GitHub.
+		return createGithubRelease( token, {
+			repositoryOwner: 'ckeditor',
+			repositoryName: 'ckeditor5',
+			version: `v${ changelogVersion }`,
+			description: releaseDescription
+		} ).then( () => changelogVersion );
+	} )
+	.then( version => {
+		log.info( 'Restoring the package.json template...' );
+
+		// Restore the template `package.json` to state before the publishing process.
+		tools.updateJSONFile( packageJsonTemplatePath, () => packageJsonTemplateCopy );
+
+		const url = `https://github.com/ckeditor/ckeditor5/releases/tag/v${ version }`;
+		log.info( `Created the release: ${ url }` );
+	} )
+	.catch( err => {
+		log.error( err.stack );
+	} );
+
+function reject( message ) {
+	return Promise.reject( new Error( message ) );
+}

+ 12 - 0
scripts/release/template/package.json

@@ -0,0 +1,12 @@
+{
+  "name": null,
+  "version": null,
+  "description": "A set of ready-to-use rich text editors created with a powerful framework. Made with real-time collaborative editing in mind.",
+  "keywords": null,
+  "engines": null,
+  "author": null,
+  "license": null,
+  "homepage": null,
+  "bugs": null,
+  "repository": null
+}

+ 39 - 0
scripts/release/update-mgit-branches.js

@@ -0,0 +1,39 @@
+#!/usr/bin/env node
+
+/**
+ * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md.
+ */
+
+/* eslint-env node */
+
+'use strict';
+
+const branchName = process.argv[ 2 ];
+
+if ( !branchName ) {
+	throw new Error( 'Missing branch name.' );
+}
+
+const path = require( 'path' );
+const { tools, logger } = require( '@ckeditor/ckeditor5-dev-utils' );
+const log = logger();
+const mgitJsonPath = path.resolve( __dirname, '..', '..', 'mgit.json' );
+
+log.info( 'Updating the "mgit.json"...' );
+
+tools.updateJSONFile( mgitJsonPath, mgitJson => {
+	const dependencies = mgitJson.dependencies;
+
+	for ( const packageName of Object.keys( dependencies ) ) {
+		dependencies[ packageName ] = dependencies[ packageName ].split( '#' )[ 0 ];
+
+		if ( branchName !== 'master' ) {
+			dependencies[ packageName ] += '#' + branchName;
+		}
+	}
+
+	return mgitJson;
+} );
+
+log.info( `Done. "mgit.json" uses the "${ branchName }" branch now.` );