Skip to content

Commit

Permalink
chore: added Commitlint and Changelog to the Project
Browse files Browse the repository at this point in the history
also added Commitizen for easily writing commit messages

ISSUES CLOSED: sendilkumarn#10
  • Loading branch information
Symphoria committed Mar 10, 2018
1 parent 03518f3 commit 3509028
Show file tree
Hide file tree
Showing 9 changed files with 311 additions and 2 deletions.
25 changes: 25 additions & 0 deletions .cz-config.js
Original file line number Diff line number Diff line change
@@ -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, jest, binTestCases, etc" },
{ value: "docs", name: "docs: Documentation" },
{ value: "misc", name: "misc: Other formats like tweaks and such" },
{ value: "chore", name: "chore: Updating docs, linting, grunt tasks etc" },
{ value: "fix", name: "fix: Bugfix"},
{ value: "refactor", name: "refactor: Refactored the code"}
]
};
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
build
86 changes: 86 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
<a name="1.0.0"></a>
# 1.0.0 (2018-03-10)


## New Features

* add circle ci batch ([626fa2f](https://github.com/Symphoria/webpack-addons-pwa/commit/626fa2f))
* add circle ci ([c4f468f](https://github.com/Symphoria/webpack-addons-pwa/commit/c4f468f))
* add ava testing ([8620af2](https://github.com/Symphoria/webpack-addons-pwa/commit/8620af2))
* add eslint ([faa1178](https://github.com/Symphoria/webpack-addons-pwa/commit/faa1178))
* adding favicon plugin ([0f97685](https://github.com/Symphoria/webpack-addons-pwa/commit/0f97685))

## Chore

* added commitlint ([a3d4ceb](https://github.com/Symphoria/webpack-addons-pwa/commit/a3d4ceb))

## Ci

* node version ([d4fcee5](https://github.com/Symphoria/webpack-addons-pwa/commit/d4fcee5))
* node version ([7299911](https://github.com/Symphoria/webpack-addons-pwa/commit/7299911))

## Misc

* Update eslintrc ([51bdb35](https://github.com/Symphoria/webpack-addons-pwa/commit/51bdb35))
* Fixes #16: Added Entry and Output fields in generated config ([1770f03](https://github.com/Symphoria/webpack-addons-pwa/commit/1770f03))
* Fixes issue #13: Prettified generated manifest file ([af481db](https://github.com/Symphoria/webpack-addons-pwa/commit/af481db))
* Copy existing or created manifest file to build directory and added tests ([437fe89](https://github.com/Symphoria/webpack-addons-pwa/commit/437fe89))
* Added Manifest Creator Plugin ([8e08995](https://github.com/Symphoria/webpack-addons-pwa/commit/8e08995))
* fix issue with chaining the promises ([d170a6d](https://github.com/Symphoria/webpack-addons-pwa/commit/d170a6d))
* use latest webpack workbox plugin ([e143077](https://github.com/Symphoria/webpack-addons-pwa/commit/e143077))
* remove no-sync rules ([485f6d8](https://github.com/Symphoria/webpack-addons-pwa/commit/485f6d8))
* Update tests syntax ([135a795](https://github.com/Symphoria/webpack-addons-pwa/commit/135a795))
* Fixes #12: npm dependencies install after init ([4846b70](https://github.com/Symphoria/webpack-addons-pwa/commit/4846b70))
* Fix answer property name ([a1c3ff8](https://github.com/Symphoria/webpack-addons-pwa/commit/a1c3ff8))
* Add promise chaining for prompts ([2c9912e](https://github.com/Symphoria/webpack-addons-pwa/commit/2c9912e))
* Fix linting ([5935a20](https://github.com/Symphoria/webpack-addons-pwa/commit/5935a20))
* Add editorconfig ([3028dda](https://github.com/Symphoria/webpack-addons-pwa/commit/3028dda))
* Update package.json test command ([82c3d94](https://github.com/Symphoria/webpack-addons-pwa/commit/82c3d94))
* Update README.md ([5b78270](https://github.com/Symphoria/webpack-addons-pwa/commit/5b78270))
* Add Gitter badge ([b53471c](https://github.com/Symphoria/webpack-addons-pwa/commit/b53471c))
* Create README.md ([fbbe081](https://github.com/Symphoria/webpack-addons-pwa/commit/fbbe081))
* Initial commit ([17c4177](https://github.com/Symphoria/webpack-addons-pwa/commit/17c4177))

<a name="1.0.0"></a>
# 1.0.0 (2018-03-10)


## New Features

* add circle ci batch ([626fa2f](https://github.com/Symphoria/webpack-addons-pwa/commit/626fa2f))
* add circle ci ([c4f468f](https://github.com/Symphoria/webpack-addons-pwa/commit/c4f468f))
* add ava testing ([8620af2](https://github.com/Symphoria/webpack-addons-pwa/commit/8620af2))
* add eslint ([faa1178](https://github.com/Symphoria/webpack-addons-pwa/commit/faa1178))
* adding favicon plugin ([0f97685](https://github.com/Symphoria/webpack-addons-pwa/commit/0f97685))

## Chore

* added commitlint ([a3d4ceb](https://github.com/Symphoria/webpack-addons-pwa/commit/a3d4ceb))

## Ci

* node version ([d4fcee5](https://github.com/Symphoria/webpack-addons-pwa/commit/d4fcee5))
* node version ([7299911](https://github.com/Symphoria/webpack-addons-pwa/commit/7299911))

## Misc

* Update eslintrc ([51bdb35](https://github.com/Symphoria/webpack-addons-pwa/commit/51bdb35))
* Fixes #16: Added Entry and Output fields in generated config ([1770f03](https://github.com/Symphoria/webpack-addons-pwa/commit/1770f03))
* Fixes issue #13: Prettified generated manifest file ([af481db](https://github.com/Symphoria/webpack-addons-pwa/commit/af481db))
* Copy existing or created manifest file to build directory and added tests ([437fe89](https://github.com/Symphoria/webpack-addons-pwa/commit/437fe89))
* Added Manifest Creator Plugin ([8e08995](https://github.com/Symphoria/webpack-addons-pwa/commit/8e08995))
* fix issue with chaining the promises ([d170a6d](https://github.com/Symphoria/webpack-addons-pwa/commit/d170a6d))
* use latest webpack workbox plugin ([e143077](https://github.com/Symphoria/webpack-addons-pwa/commit/e143077))
* remove no-sync rules ([485f6d8](https://github.com/Symphoria/webpack-addons-pwa/commit/485f6d8))
* Update tests syntax ([135a795](https://github.com/Symphoria/webpack-addons-pwa/commit/135a795))
* Fixes #12: npm dependencies install after init ([4846b70](https://github.com/Symphoria/webpack-addons-pwa/commit/4846b70))
* Fix answer property name ([a1c3ff8](https://github.com/Symphoria/webpack-addons-pwa/commit/a1c3ff8))
* Add promise chaining for prompts ([2c9912e](https://github.com/Symphoria/webpack-addons-pwa/commit/2c9912e))
* Fix linting ([5935a20](https://github.com/Symphoria/webpack-addons-pwa/commit/5935a20))
* Add editorconfig ([3028dda](https://github.com/Symphoria/webpack-addons-pwa/commit/3028dda))
* Update package.json test command ([82c3d94](https://github.com/Symphoria/webpack-addons-pwa/commit/82c3d94))
* Update README.md ([5b78270](https://github.com/Symphoria/webpack-addons-pwa/commit/5b78270))
* Add Gitter badge ([b53471c](https://github.com/Symphoria/webpack-addons-pwa/commit/b53471c))
* Create README.md ([fbbe081](https://github.com/Symphoria/webpack-addons-pwa/commit/fbbe081))
* Initial commit ([17c4177](https://github.com/Symphoria/webpack-addons-pwa/commit/17c4177))

98 changes: 98 additions & 0 deletions build/changelog-generator/index.js
Original file line number Diff line number Diff line change
@@ -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
};
28 changes: 28 additions & 0 deletions build/changelog-generator/templates/commit.hbs
Original file line number Diff line number Diff line change
@@ -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~}}
13 changes: 13 additions & 0 deletions build/changelog-generator/templates/header.hbs
Original file line number Diff line number Diff line change
@@ -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/
--}}
<a name="{{version}}"></a>
# {{version}} ({{date}})
{{#if @root.linkCompare~}}
[Full Changelog]({{~@root.repoUrl}}/compare/{{previousTag}}...{{currentTag}})
{{~/if}}
22 changes: 22 additions & 0 deletions build/changelog-generator/templates/template.hbs
Original file line number Diff line number Diff line change
@@ -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}}

19 changes: 19 additions & 0 deletions commitlint.config.js
Original file line number Diff line number Diff line change
@@ -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']
}
};
21 changes: 19 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,33 @@
"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",
"webpack-addons": "^1.1.5",
"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"
}
}

0 comments on commit 3509028

Please sign in to comment.