Skip to content

Commit 3fd5dab

Browse files
committed
feat: upgrade husky hooks setup
BREAKING CHANGE: husky hooks have now a new place where they live
1 parent e02bee2 commit 3fd5dab

File tree

3 files changed

+27
-9
lines changed

3 files changed

+27
-9
lines changed

package.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
"scripts": {
1313
"test": "./bin/cli.js test run",
1414
"postinstall": "node ./scripts/setup-semantic-release.js",
15-
"semantic-release": "semantic-release",
16-
"commitmsg": "commitlint -e $GIT_PARAMS"
15+
"semantic-release": "semantic-release"
1716
},
1817
"publishConfig": {
1918
"access": "public"
@@ -48,6 +47,8 @@
4847
"glob": "^7.1.3",
4948
"husky": "^1.1.0",
5049
"is": "^3.2.1",
50+
"lodash.get": "^4.4.2",
51+
"lodash.set": "^4.3.2",
5152
"ms-conf": "^3.3.0",
5253
"npm-path": "^2.0.4",
5354
"pino": "^5.6.3",
@@ -73,5 +74,10 @@
7374
],
7475
"jest": {
7576
"testURL": "http://tester.local"
77+
},
78+
"husky": {
79+
"hooks": {
80+
"commit-msg": "commitlint -e $HUSKY_GIT_PARAMS"
81+
}
7682
}
7783
}

scripts/setup-semantic-release.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
const debug = require('debug')('makeomatic:deploy');
66
const path = require('path');
7+
const get = require('lodash.get');
8+
const set = require('lodash.set');
79
const fs = require('fs');
810

911
const isForced = process.argv.some(a => a === '--force');
@@ -49,7 +51,10 @@ function copyConfiguration(filename) {
4951
function alreadyInstalled(scriptName, script, holder) {
5052
const filename = clientPackageJsonFilename();
5153
const pkg = JSON.parse(fs.readFileSync(filename));
52-
if (!pkg[holder] || !pkg[holder][scriptName] || pkg[holder][scriptName] !== script) {
54+
if (!get(pkg, holder)
55+
|| !get(pkg, holder)[scriptName]
56+
|| !get(pkg, holder)[scriptName] !== script
57+
) {
5358
return false;
5459
}
5560

@@ -60,19 +65,16 @@ function addPlugin(scriptName, script, holder) {
6065
const filename = clientPackageJsonFilename();
6166
const pkg = JSON.parse(fs.readFileSync(filename));
6267

63-
// default this to {}
64-
if (!pkg[holder]) pkg[holder] = {};
65-
66-
pkg[holder][scriptName] = script;
68+
set(pkg, `${holder}.${scriptName}`, script);
6769
const text = `${JSON.stringify(pkg, null, 2)}\n`;
6870
fs.writeFileSync(filename, text, 'utf8');
6971
console.log(`✅ set ${holder}.${scriptName} to "${script}" in`, filename);
7072
}
7173

7274
[
7375
['semantic-release', 'semantic-release', 'scripts'],
74-
['commitmsg', 'commitlint -e $GIT_PARAMS', 'scripts'],
75-
['preparecommitmsg', './node_modules/@makeomatic/deploy/git-hooks/prepare-commit-msg $GIT_PARAMS', 'scripts'],
76+
['commit-msg', 'commitlint -e $HUSKY_GIT_PARAMS', 'husky.hooks'],
77+
['prepare-commit-msg', './node_modules/@makeomatic/deploy/git-hooks/prepare-commit-msg $HUSKY_GIT_PARAMS', 'husky.hooks'],
7678
].forEach((input) => {
7779
const [scriptName, name, holder] = input;
7880
if (!alreadyInstalled(scriptName, name, holder)) {

yarn.lock

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4630,6 +4630,11 @@ lodash.escaperegexp@^4.1.2:
46304630
resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347"
46314631
integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=
46324632

4633+
lodash.get@^4.4.2:
4634+
version "4.4.2"
4635+
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
4636+
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
4637+
46334638
lodash.isplainobject@^4.0.6:
46344639
version "4.0.6"
46354640
resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
@@ -4670,6 +4675,11 @@ lodash.reduce@^4.6.0:
46704675
resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b"
46714676
integrity sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=
46724677

4678+
lodash.set@^4.3.2:
4679+
version "4.3.2"
4680+
resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23"
4681+
integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=
4682+
46734683
46744684
version "4.1.1"
46754685
resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d"

0 commit comments

Comments
 (0)