Skip to content

Commit 74531a3

Browse files
Eunjae Leeshipjs
andauthored
fix: specify path for changelog (#673)
Co-authored-by: shipjs <shipjs@test.com>
1 parent 67d45f0 commit 74531a3

8 files changed

Lines changed: 378 additions & 115 deletions

File tree

package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"version": "0.22.0",
33
"scripts": {
4+
"postinstall": "patch-package",
45
"prepare": "yarn build",
56
"build": "yarn workspace shipjs-lib build",
67
"lint": "lerna run lint --stream",
@@ -29,5 +30,9 @@
2930
"devDependencies": {
3031
"all-contributors-cli": "6.15.0",
3132
"lerna": "3.22.0"
33+
},
34+
"dependencies": {
35+
"patch-package": "^6.2.2",
36+
"postinstall-postinstall": "^2.1.0"
3237
}
33-
}
38+
}

packages/shipjs-lib/src/lib/config/loadConfig.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
import dotenv from 'dotenv';
21
import { resolve } from 'path';
32
import { promises as fs, constants } from 'fs';
43

54
import defaultConfig from './defaultConfig';
65
import mergeConfig from './mergeConfig';
7-
dotenv.config();
86

97
const exist = (path) =>
108
fs

packages/shipjs/package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,10 @@
4444
"arg": "4.1.3",
4545
"chalk": "4.0.0",
4646
"change-case": "4.1.1",
47-
"conventional-changelog": "^3.1.15",
47+
"conventional-changelog-angular": "^5.0.6",
48+
"conventional-changelog-core": "^4.1.4",
49+
"conventional-changelog-preset-loader": "^2.3.0",
50+
"deepmerge": "^4.2.2",
4851
"dotenv": "^8.2.0",
4952
"ejs": "^3.0.0",
5053
"esm": "3.2.25",
@@ -76,4 +79,4 @@
7679
"jest": "26.0.1",
7780
"jest-watch-typeahead": "0.6.0"
7881
}
79-
}
82+
}

packages/shipjs/src/step/prepare/__tests__/updateChangelog.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { parseArgs } from '../../../util';
44
import tempWrite from 'temp-write';
55

66
describe('prepareParams', () => {
7-
it('loads configuration from --config option', () => {
7+
it('loads configuration from --config option', async () => {
88
parseArgs.mockImplementation(jest.requireActual('../../../util').parseArgs);
99
const config = {
1010
writerOpts: {
@@ -15,7 +15,7 @@ describe('prepareParams', () => {
1515
const configPath = tempWrite.sync(configString);
1616
const configDir = path.basename(path.dirname(configPath));
1717

18-
const { args } = prepareParams({
18+
const { args } = await prepareParams({
1919
dir: configDir,
2020
conventionalChangelogArgs: `-i CHANGELOG.md -s --config ${configPath}`,
2121
revisionRange: '1.0.0..1.0.1',

packages/shipjs/src/step/prepare/updateChangelog.js

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import path from 'path';
22
import fs from 'fs';
3-
import conventionalChangelog from 'conventional-changelog';
3+
import conventionalChangelogCore from 'conventional-changelog-core';
4+
import conventionalChangelogPresetLoader from 'conventional-changelog-preset-loader';
45
import tempfile from 'tempfile';
56
import addStream from 'add-stream';
7+
import merge from 'deepmerge';
68
import runStep from '../runStep';
79
import { parseArgs } from '../../util';
810

@@ -25,20 +27,22 @@ export default ({
2527
}
2628
return new Promise((resolve, reject) => {
2729
const { conventionalChangelogArgs } = config;
28-
const { args, gitRawCommitsOpts, templateContext } = prepareParams({
30+
prepareParams({
2931
dir,
3032
conventionalChangelogArgs,
3133
releaseCount,
3234
firstRelease,
3335
revisionRange,
3436
reject,
35-
});
36-
runConventionalChangelog({
37-
args,
38-
templateContext,
39-
gitRawCommitsOpts,
40-
resolve,
41-
reject,
37+
}).then(({ args, gitRawCommitsOpts, templateContext }) => {
38+
runConventionalChangelog({
39+
args,
40+
templateContext,
41+
gitRawCommitsOpts,
42+
resolve,
43+
reject,
44+
dir,
45+
});
4246
});
4347
});
4448
}
@@ -78,7 +82,7 @@ const argSpec = {
7882
'-t': '--tag-prefix',
7983
};
8084

81-
export function prepareParams({
85+
export async function prepareParams({
8286
dir,
8387
conventionalChangelogArgs,
8488
releaseCount,
@@ -118,9 +122,24 @@ export function prepareParams({
118122
}
119123
const templateContext =
120124
args.context && require(path.resolve(dir, args.context));
121-
if (args.config) {
122-
args.config = require(path.resolve(dir, args.config));
125+
args.config = args.config ? require(path.resolve(dir, args.config)) : {};
126+
if (args.preset) {
127+
try {
128+
args.config = merge(
129+
await conventionalChangelogPresetLoader(args.preset),
130+
args.config
131+
);
132+
} catch (err) {
133+
if (typeof args.preset === 'object') {
134+
args.warn(`Preset: "${args.preset.name}" ${err.message}`);
135+
} else if (typeof args.preset === 'string') {
136+
args.warn(`Preset: "${args.preset}" ${err.message}`);
137+
} else {
138+
args.warn(`Preset: ${err.message}`);
139+
}
140+
}
123141
}
142+
124143
return { args, gitRawCommitsOpts, templateContext };
125144
}
126145

@@ -130,15 +149,19 @@ function runConventionalChangelog({
130149
gitRawCommitsOpts,
131150
resolve,
132151
reject,
152+
dir,
133153
}) {
134154
if (!fs.existsSync(args.outfile)) {
135155
fs.writeFileSync(args.outfile, '');
136156
}
137157

138-
const changelogStream = conventionalChangelog(
158+
const changelogStream = conventionalChangelogCore(
139159
args,
140160
templateContext,
141-
gitRawCommitsOpts
161+
{ ...gitRawCommitsOpts, path: dir },
162+
undefined,
163+
undefined,
164+
{ path: dir, cwd: dir }
142165
).on('error', reject);
143166

144167
const readStream = fs.createReadStream(args.infile).on('error', reject);
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
diff --git a/node_modules/conventional-changelog-core/index.js b/node_modules/conventional-changelog-core/index.js
2+
index a7eb756..f095452 100644
3+
--- a/node_modules/conventional-changelog-core/index.js
4+
+++ b/node_modules/conventional-changelog-core/index.js
5+
@@ -29,7 +29,7 @@ function conventionalChangelog (options, context, gitRawCommitsOpts, parserOpts,
6+
return gitRawCommits(_.merge({}, gitRawCommitsOpts, {
7+
from: from,
8+
to: to
9+
- }))
10+
+ }), gitRawExecOpts)
11+
.on('error', function (err) {
12+
if (!commitsErrorThrown) {
13+
setImmediate(commitsStream.emit.bind(commitsStream), 'error', err)
14+
diff --git a/node_modules/conventional-changelog-core/lib/merge-config.js b/node_modules/conventional-changelog-core/lib/merge-config.js
15+
index 8428bf4..72699b8 100644
16+
--- a/node_modules/conventional-changelog-core/lib/merge-config.js
17+
+++ b/node_modules/conventional-changelog-core/lib/merge-config.js
18+
@@ -21,7 +21,7 @@ const rhosts = /github|bitbucket|gitlab/i
19+
20+
function semverTagsPromise (options) {
21+
return Q.Promise(function (resolve, reject) {
22+
- gitSemverTags({ lernaTags: !!options.lernaPackage, package: options.lernaPackage, tagPrefix: options.tagPrefix, skipUnstable: options.skipUnstable }, function (err, result) {
23+
+ gitSemverTags({ lernaTags: !!options.lernaPackage, package: options.lernaPackage, tagPrefix: options.tagPrefix, skipUnstable: options.skipUnstable, cwd: options.pkg.path }, function (err, result) {
24+
if (err) {
25+
reject(err)
26+
} else {
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
diff --git a/node_modules/conventional-recommended-bump/index.js b/node_modules/conventional-recommended-bump/index.js
2+
index 51c8a8a..c4cdc77 100644
3+
--- a/node_modules/conventional-recommended-bump/index.js
4+
+++ b/node_modules/conventional-recommended-bump/index.js
5+
@@ -69,7 +69,7 @@ function conventionalRecommendedBump (optionsArgument, parserOptsArgument, cbArg
6+
format: `%B%n-hash-%n%H`,
7+
from: tags[0] || ``,
8+
path: options.path
9+
- })
10+
+ }, { cwd: options.path })
11+
.pipe(conventionalCommitsParser(parserOpts))
12+
.pipe(concat(data => {
13+
const commits = options.ignoreReverted ? conventionalCommitsFilter(data) : data
14+
@@ -92,7 +92,8 @@ function conventionalRecommendedBump (optionsArgument, parserOptsArgument, cbArg
15+
{
16+
lernaTags: !!options.lernaPackage,
17+
package: options.lernaPackage,
18+
- tagPrefix: options.tagPrefix
19+
+ tagPrefix: options.tagPrefix,
20+
+ cwd: options.path
21+
})
22+
}).catch(err => cb(err))
23+
}

0 commit comments

Comments
 (0)