diff --git a/.cz-config.js b/.cz-config.js new file mode 100644 index 0000000..a8c01a7 --- /dev/null +++ b/.cz-config.js @@ -0,0 +1,25 @@ +/** + * @license Copyright 2017 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by + * applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS + * OF ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + */ +// Based on https://github.com/GoogleChrome/lighthouse/blob/master/.cz-config.js + +module.exports = { + allowCustomScopes: true, + scopes: [], + types: [ + { value: "feat", name: "feat: A new feature" }, + { value: "tests", name: "tests: Tests" }, + { value: "docs", name: "docs: Documentation" }, + { value: "misc", name: "misc: Other formats like tweaks and such" }, + { value: "chore", name: "chore: Updating docs, linting etc" }, + { value: "fix", name: "fix: Bugfix"}, + { value: "refactor", name: "refactor: Refactored the code"} + ] +}; diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..c795b05 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +build \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..b9955ea --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,86 @@ + +# 1.0.0 (2018-03-10) + + +## New Features + +* add circle ci batch ([626fa2f](https://github.com/sendilkumarn/webpack-addons-pwa/commit/626fa2f)) +* add circle ci ([c4f468f](https://github.com/sendilkumarn/webpack-addons-pwa/commit/c4f468f)) +* add ava testing ([8620af2](https://github.com/sendilkumarn/webpack-addons-pwa/commit/8620af2)) +* add eslint ([faa1178](https://github.com/sendilkumarn/webpack-addons-pwa/commit/faa1178)) +* adding favicon plugin ([0f97685](https://github.com/sendilkumarn/webpack-addons-pwa/commit/0f97685)) + +## Chore + +* added commitlint ([a3d4ceb](https://github.com/sendilkumarn/webpack-addons-pwa/commit/a3d4ceb)) + +## Ci + +* node version ([d4fcee5](https://github.com/sendilkumarn/webpack-addons-pwa/commit/d4fcee5)) +* node version ([7299911](https://github.com/sendilkumarn/webpack-addons-pwa/commit/7299911)) + +## Misc + +* Update eslintrc ([51bdb35](https://github.com/sendilkumarn/webpack-addons-pwa/commit/51bdb35)) +* Fixes #16: Added Entry and Output fields in generated config ([1770f03](https://github.com/sendilkumarn/webpack-addons-pwa/commit/1770f03)) +* Fixes issue #13: Prettified generated manifest file ([af481db](https://github.com/sendilkumarn/webpack-addons-pwa/commit/af481db)) +* Copy existing or created manifest file to build directory and added tests ([437fe89](https://github.com/sendilkumarn/webpack-addons-pwa/commit/437fe89)) +* Added Manifest Creator Plugin ([8e08995](https://github.com/sendilkumarn/webpack-addons-pwa/commit/8e08995)) +* fix issue with chaining the promises ([d170a6d](https://github.com/sendilkumarn/webpack-addons-pwa/commit/d170a6d)) +* use latest webpack workbox plugin ([e143077](https://github.com/sendilkumarn/webpack-addons-pwa/commit/e143077)) +* remove no-sync rules ([485f6d8](https://github.com/sendilkumarn/webpack-addons-pwa/commit/485f6d8)) +* Update tests syntax ([135a795](https://github.com/sendilkumarn/webpack-addons-pwa/commit/135a795)) +* Fixes #12: npm dependencies install after init ([4846b70](https://github.com/sendilkumarn/webpack-addons-pwa/commit/4846b70)) +* Fix answer property name ([a1c3ff8](https://github.com/sendilkumarn/webpack-addons-pwa/commit/a1c3ff8)) +* Add promise chaining for prompts ([2c9912e](https://github.com/sendilkumarn/webpack-addons-pwa/commit/2c9912e)) +* Fix linting ([5935a20](https://github.com/sendilkumarn/webpack-addons-pwa/commit/5935a20)) +* Add editorconfig ([3028dda](https://github.com/sendilkumarn/webpack-addons-pwa/commit/3028dda)) +* Update package.json test command ([82c3d94](https://github.com/sendilkumarn/webpack-addons-pwa/commit/82c3d94)) +* Update README.md ([5b78270](https://github.com/sendilkumarn/webpack-addons-pwa/commit/5b78270)) +* Add Gitter badge ([b53471c](https://github.com/sendilkumarn/webpack-addons-pwa/commit/b53471c)) +* Create README.md ([fbbe081](https://github.com/sendilkumarn/webpack-addons-pwa/commit/fbbe081)) +* Initial commit ([17c4177](https://github.com/sendilkumarn/webpack-addons-pwa/commit/17c4177)) + + +# 1.0.0 (2018-03-10) + + +## New Features + +* add circle ci batch ([626fa2f](https://github.com/sendilkumarn/webpack-addons-pwa/commit/626fa2f)) +* add circle ci ([c4f468f](https://github.com/sendilkumarn/webpack-addons-pwa/commit/c4f468f)) +* add ava testing ([8620af2](https://github.com/sendilkumarn/webpack-addons-pwa/commit/8620af2)) +* add eslint ([faa1178](https://github.com/sendilkumarn/webpack-addons-pwa/commit/faa1178)) +* adding favicon plugin ([0f97685](https://github.com/sendilkumarn/webpack-addons-pwa/commit/0f97685)) + +## Chore + +* added commitlint ([a3d4ceb](https://github.com/sendilkumarn/webpack-addons-pwa/commit/a3d4ceb)) + +## Ci + +* node version ([d4fcee5](https://github.com/sendilkumarn/webpack-addons-pwa/commit/d4fcee5)) +* node version ([7299911](https://github.com/sendilkumarn/webpack-addons-pwa/commit/7299911)) + +## Misc + +* Update eslintrc ([51bdb35](https://github.com/sendilkumarn/webpack-addons-pwa/commit/51bdb35)) +* Fixes #16: Added Entry and Output fields in generated config ([1770f03](https://github.com/sendilkumarn/webpack-addons-pwa/commit/1770f03)) +* Fixes issue #13: Prettified generated manifest file ([af481db](https://github.com/sendilkumarn/webpack-addons-pwa/commit/af481db)) +* Copy existing or created manifest file to build directory and added tests ([437fe89](https://github.com/sendilkumarn/webpack-addons-pwa/commit/437fe89)) +* Added Manifest Creator Plugin ([8e08995](https://github.com/sendilkumarn/webpack-addons-pwa/commit/8e08995)) +* fix issue with chaining the promises ([d170a6d](https://github.com/sendilkumarn/webpack-addons-pwa/commit/d170a6d)) +* use latest webpack workbox plugin ([e143077](https://github.com/sendilkumarn/webpack-addons-pwa/commit/e143077)) +* remove no-sync rules ([485f6d8](https://github.com/sendilkumarn/webpack-addons-pwa/commit/485f6d8)) +* Update tests syntax ([135a795](https://github.com/sendilkumarn/webpack-addons-pwa/commit/135a795)) +* Fixes #12: npm dependencies install after init ([4846b70](https://github.com/sendilkumarn/webpack-addons-pwa/commit/4846b70)) +* Fix answer property name ([a1c3ff8](https://github.com/sendilkumarn/webpack-addons-pwa/commit/a1c3ff8)) +* Add promise chaining for prompts ([2c9912e](https://github.com/sendilkumarn/webpack-addons-pwa/commit/2c9912e)) +* Fix linting ([5935a20](https://github.com/sendilkumarn/webpack-addons-pwa/commit/5935a20)) +* Add editorconfig ([3028dda](https://github.com/sendilkumarn/webpack-addons-pwa/commit/3028dda)) +* Update package.json test command ([82c3d94](https://github.com/sendilkumarn/webpack-addons-pwa/commit/82c3d94)) +* Update README.md ([5b78270](https://github.com/sendilkumarn/webpack-addons-pwa/commit/5b78270)) +* Add Gitter badge ([b53471c](https://github.com/sendilkumarn/webpack-addons-pwa/commit/b53471c)) +* Create README.md ([fbbe081](https://github.com/sendilkumarn/webpack-addons-pwa/commit/fbbe081)) +* Initial commit ([17c4177](https://github.com/sendilkumarn/webpack-addons-pwa/commit/17c4177)) + diff --git a/build/changelog-generator/index.js b/build/changelog-generator/index.js new file mode 100644 index 0000000..e32af9e --- /dev/null +++ b/build/changelog-generator/index.js @@ -0,0 +1,98 @@ +/** + * @license Copyright 2017 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + * Based on: https://github.com/GoogleChrome/lighthouse/blob/master/build/changelog-generator/ + */ + +const readFileSync = require("fs").readFileSync; +const resolve = require("path").resolve; +const mainTemplate = readFileSync( + resolve(__dirname, "templates/template.hbs") +).toString(); +const headerPartial = readFileSync( + resolve(__dirname, "templates/header.hbs") +).toString(); +const commitPartial = readFileSync( + resolve(__dirname, "templates/commit.hbs") +).toString(); + +const pullRequestRegex = /\(#(\d+)\)$/; +const parserOpts = { + headerCorrespondence: ["type", "scope", "message"], + headerPattern: /^(\w*)(?:\((.*)\))?: (.*)$/ +}; + +process.stderr.write(` +> Be sure to have the latest git tags locally: + git fetch --tags + +`); + +const writerOpts = { + mainTemplate, + headerPartial, + commitPartial, + transform: commit => { + if (typeof commit.hash === "string") { + commit.hash = commit.hash.substring(0, 7); + } + + if (commit.type === "test") { + commit.type = "tests"; + } else if (commit.type === "new_feature" || commit.type === "feat") { + commit.type = "New Features"; + } + + if (commit.type) { + commit.type = commit.type.replace(/_/g, " "); + commit.type = + commit.type.substring(0, 1).toUpperCase() + commit.type.substring(1); + } else { + commit.type = "Misc"; + } + + let pullRequestMatch = commit.header.match(pullRequestRegex); + // If header does not provide a PR we try the message + if (!pullRequestMatch && commit.message) { + pullRequestMatch = commit.message.match(pullRequestRegex); + } + + if (pullRequestMatch) { + commit.header = commit.header.replace(pullRequestMatch[0], "").trim(); + if (commit.message) { + commit.message = commit.message.replace(pullRequestMatch[0], "").trim(); + } + + commit.PR = pullRequestMatch[1]; + } + + return commit; + }, + groupBy: "type", + commitGroupsSort: (a, b) => { + // Put new feature on the top + if (a.title === "New Features") { + return -1; + } + if (b.title === "New Features") { + return 1; + } + + // Put misc on the bottom + if (a.title === "Misc") { + return 1; + } + if (b.title === "Misc") { + return -1; + } + + return a.title.localeCompare(b.title); + }, + commitsSort: ["type", "scope"] +}; + +module.exports = { + parserOpts, + writerOpts +}; diff --git a/build/changelog-generator/templates/commit.hbs b/build/changelog-generator/templates/commit.hbs new file mode 100644 index 0000000..2ad8f10 --- /dev/null +++ b/build/changelog-generator/templates/commit.hbs @@ -0,0 +1,28 @@ +{{!-- +/** + * @license Copyright 2017 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + */ + From: https://github.com/GoogleChrome/lighthouse/blob/master/build/changelog-generator/ +--}} +* {{#if scope}}{{scope}}: {{/if~}} + {{#if message ~}} + {{~message~}} + {{~else~}} + {{~header~}} + {{~/if ~}} +{{~!-- PR number/commit hash --}} +{{~#if @root.linkReferences~}} + {{~#if PR}} ([#{{PR}}]( + {{~#if @root.host}}{{~@root.host}}/{{/if~}} + {{~#if @root.owner ~}}{{@root.owner}}/{{/if~}} + {{~@root.repository}}/pull/{{PR}})) + {{~else}} ([{{hash}}]( + {{~#if @root.host}}{{~@root.host}}/{{/if~}} + {{~#if @root.owner ~}}{{@root.owner}}/{{/if~}} + {{~@root.repository}}/{{@root.commit}}/{{hash}})) + {{~/if~}} +{{~else~}} + {{~hash~}} +{{~/if~}} diff --git a/build/changelog-generator/templates/header.hbs b/build/changelog-generator/templates/header.hbs new file mode 100644 index 0000000..ae13930 --- /dev/null +++ b/build/changelog-generator/templates/header.hbs @@ -0,0 +1,13 @@ +{{!-- +/** + * @license Copyright 2017 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + */ + From: https://github.com/GoogleChrome/lighthouse/blob/master/build/changelog-generator/ +--}} + +# {{version}} ({{date}}) +{{#if @root.linkCompare~}} + [Full Changelog]({{~@root.repoUrl}}/compare/{{previousTag}}...{{currentTag}}) +{{~/if}} diff --git a/build/changelog-generator/templates/template.hbs b/build/changelog-generator/templates/template.hbs new file mode 100644 index 0000000..879c5bd --- /dev/null +++ b/build/changelog-generator/templates/template.hbs @@ -0,0 +1,22 @@ +{{!-- +/** + * @license Copyright 2017 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + */ +From: https://github.com/GoogleChrome/lighthouse/blob/master/build/changelog-generator/ +--}} +{{> header}} + +{{#each commitGroups}} + + {{#if title~}} + ## {{title}} + + {{/if}} + {{#each commits}} + {{~> commit root=@root}} + + {{/each}} +{{/each}} + diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..5a2c3d2 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,19 @@ +module.exports = { + extends: ["cz"], + rules: { + 'body-leading-blank': [1, 'always'], + 'footer-leading-blank': [1, 'always'], + 'header-max-length': [2, 'always', 72], + 'scope-case': [2, 'always', 'lower-case'], + 'subject-case': [ + 2, + 'never', + ['sentence-case', 'start-case', 'pascal-case', 'upper-case'] + ], + 'subject-empty': [2, 'never'], + 'subject-full-stop': [2, 'never', '.'], + "subject-tense": [1, "always", ["present-imperative"]], + 'type-case': [2, 'always', 'lower-case'], + 'type-empty': [2, 'never'] + } +}; diff --git a/package.json b/package.json index 271ecc3..28089ab 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,17 @@ "license": "MIT", "scripts": { "lint": "eslint *.js", - "test": "ava --verbose" + "test": "ava --verbose", + "commitmsg": "commitlint -e $GIT_PARAMS", + "changelog": "conventional-changelog --config ./build/changelog-generator/index.js --infile CHANGELOG.md --same-file" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-customizable" + }, + "cz-customizable": { + "config": "./.cz-config.js" + } }, "dependencies": { "cross-spawn": "^6.0.5", @@ -14,8 +24,15 @@ "yeoman-generator": "^2.0.2" }, "devDependencies": { + "@commitlint/cli": "^6.1.3", + "@commitlint/config-conventional": "^6.1.3", "ava": "^1.0.0-beta.3", "babel-eslint": "^8.2.1", - "eslint": "^4.18.1" + "commitizen": "^2.9.6", + "conventional-changelog-cli": "^1.3.15", + "conventional-changelog-lint-config-cz": "^0.3.0", + "cz-customizable": "^5.2.0", + "eslint": "^4.18.1", + "husky": "^0.14.3" } }