@astral/pack 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/commands/generatePackageJson/generatePackageJson.js +2 -2
- package/commands/semanticRelease/checkPackageVersion/checkPackageVersion.js +4 -3
- package/commands/semanticRelease/createRelease/createRelease.js +2 -2
- package/commands/semanticRelease/{defaultConfig.d.ts → getDefaultConfig/getDefaultConfig.d.ts} +3 -13
- package/commands/semanticRelease/getDefaultConfig/getDefaultConfig.js +64 -0
- package/commands/semanticRelease/getDefaultConfig/index.d.ts +1 -0
- package/commands/semanticRelease/getDefaultConfig/index.js +17 -0
- package/config/ConfigService/ConfigService.d.ts +1 -0
- package/config/ConfigService/validation.js +6 -0
- package/config/types.d.ts +23 -0
- package/package.json +1 -1
- package/commands/semanticRelease/defaultConfig.js +0 -63
package/README.md
CHANGED
|
@@ -97,6 +97,35 @@ module.exports = {
|
|
|
97
97
|
};
|
|
98
98
|
```
|
|
99
99
|
|
|
100
|
+
## Настройка веток для semantic-release
|
|
101
|
+
|
|
102
|
+
По умолчанию semantic-release работает с ветками:
|
|
103
|
+
- `main` - основная ветка для релизов
|
|
104
|
+
- `rc` - prerelease ветка
|
|
105
|
+
|
|
106
|
+
Для переопределения веток используйте `semanticRelease.releaseBranches`:
|
|
107
|
+
```js
|
|
108
|
+
module.exports = {
|
|
109
|
+
semanticRelease: {
|
|
110
|
+
repositoryUrl: 'https://git.astralnalog.ru/frontend.shared/pack',
|
|
111
|
+
releaseBranches: [
|
|
112
|
+
// Основная ветка
|
|
113
|
+
'main',
|
|
114
|
+
// Ветка rc будет публиковаться с тэгом 'rc'
|
|
115
|
+
{ name: 'rc', prerelease: true },
|
|
116
|
+
// В ветке v4 будут публиковаться релизы с тэгом 'rc'
|
|
117
|
+
{ name: 'v4', prerelease: 'rc' },
|
|
118
|
+
// Будут публиковаться релизы версий только для 3.x.x
|
|
119
|
+
{ name: 'v3', range: '3.x.x' },
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Конфигурация `releaseBranches` **полностью заменяет** дефолтные ветки.
|
|
126
|
+
|
|
127
|
+
Подробнее в документации [semantic-release](https://semantic-release.gitbook.io/semantic-release/usage/workflow-configuration#branches).
|
|
128
|
+
|
|
100
129
|
## Синхронный релиз пакетов
|
|
101
130
|
|
|
102
131
|
Для того чтобы deps пакета были синхронизированы с основным пакетом необходимо использовать `semanticRelease.releaseGroup`:
|
|
@@ -57,12 +57,12 @@ const initExportsGenerator = ({ packageExports, format, lang }) => (originPackag
|
|
|
57
57
|
if (lang === 'ts') {
|
|
58
58
|
rootExports.types = './index.d.ts';
|
|
59
59
|
}
|
|
60
|
+
rootExports.default = './index.js';
|
|
61
|
+
rootExports.import = './index.js';
|
|
60
62
|
return {
|
|
61
63
|
...originPackageJson,
|
|
62
64
|
exports: {
|
|
63
65
|
'.': rootExports,
|
|
64
|
-
default: './index.js',
|
|
65
|
-
import: './index.js',
|
|
66
66
|
...packageExports,
|
|
67
67
|
},
|
|
68
68
|
};
|
|
@@ -8,14 +8,15 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const semantic_release_1 = __importDefault(require("semantic-release"));
|
|
10
10
|
const services_1 = require("../../../services");
|
|
11
|
-
const
|
|
11
|
+
const getDefaultConfig_1 = require("../getDefaultConfig");
|
|
12
12
|
const checkPackageVersion = async (config) => {
|
|
13
13
|
services_1.logger.progress('Анализ коммитов');
|
|
14
14
|
let versions;
|
|
15
15
|
try {
|
|
16
|
+
const { branches } = (0, getDefaultConfig_1.getDefaultConfig)(config.semanticRelease);
|
|
16
17
|
const result = await (0, semantic_release_1.default)({
|
|
17
|
-
branches
|
|
18
|
-
plugins: [
|
|
18
|
+
branches,
|
|
19
|
+
plugins: [getDefaultConfig_1.commitAnalyzerPlugin],
|
|
19
20
|
dryRun: true,
|
|
20
21
|
ci: true,
|
|
21
22
|
});
|
|
@@ -6,11 +6,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.createRelease = void 0;
|
|
7
7
|
const semantic_release_1 = __importDefault(require("semantic-release"));
|
|
8
8
|
const services_1 = require("../../../services");
|
|
9
|
-
const
|
|
9
|
+
const getDefaultConfig_1 = require("../getDefaultConfig");
|
|
10
10
|
const createRelease = async (config) => {
|
|
11
11
|
services_1.logger.progress('Добавление git тэгов и создание релиза в gitlab');
|
|
12
12
|
try {
|
|
13
|
-
const semanticReleaseConfig = (0,
|
|
13
|
+
const semanticReleaseConfig = (0, getDefaultConfig_1.getDefaultConfig)(config.semanticRelease);
|
|
14
14
|
const result = await (0, semantic_release_1.default)({
|
|
15
15
|
...semanticReleaseConfig,
|
|
16
16
|
plugins: semanticReleaseConfig.plugins,
|
package/commands/semanticRelease/{defaultConfig.d.ts → getDefaultConfig/getDefaultConfig.d.ts}
RENAMED
|
@@ -1,21 +1,12 @@
|
|
|
1
|
-
type
|
|
2
|
-
repositoryUrl: string;
|
|
3
|
-
};
|
|
4
|
-
export declare const defaultBranches: (string | {
|
|
5
|
-
name: string;
|
|
6
|
-
prerelease: boolean;
|
|
7
|
-
})[];
|
|
1
|
+
import type { SemanticReleaseConfig } from '../../../config/types';
|
|
8
2
|
export declare const commitAnalyzerPlugin: (string | {
|
|
9
3
|
releaseRules: {
|
|
10
4
|
type: string;
|
|
11
5
|
release: string;
|
|
12
6
|
}[];
|
|
13
7
|
})[];
|
|
14
|
-
export declare const getDefaultConfig: ({ repositoryUrl }:
|
|
15
|
-
branches: (
|
|
16
|
-
name: string;
|
|
17
|
-
prerelease: boolean;
|
|
18
|
-
})[];
|
|
8
|
+
export declare const getDefaultConfig: ({ repositoryUrl, releaseBranches, }: SemanticReleaseConfig) => {
|
|
9
|
+
branches: import("semantic-release").BranchSpec[];
|
|
19
10
|
repositoryUrl: string;
|
|
20
11
|
plugins: ((string | {
|
|
21
12
|
releaseRules: {
|
|
@@ -36,4 +27,3 @@ export declare const getDefaultConfig: ({ repositoryUrl }: Params) => {
|
|
|
36
27
|
gitlabUrl: string;
|
|
37
28
|
})[])[];
|
|
38
29
|
};
|
|
39
|
-
export {};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDefaultConfig = exports.commitAnalyzerPlugin = void 0;
|
|
4
|
+
exports.commitAnalyzerPlugin = [
|
|
5
|
+
'@semantic-release/commit-analyzer',
|
|
6
|
+
{
|
|
7
|
+
releaseRules: [
|
|
8
|
+
{ type: 'bug', release: 'patch' },
|
|
9
|
+
{ type: 'build', release: 'patch' },
|
|
10
|
+
{ type: 'feat', release: 'minor' },
|
|
11
|
+
{ type: 'refactor', release: 'patch' },
|
|
12
|
+
{ type: 'major', release: 'major' },
|
|
13
|
+
{ type: 'doc', release: 'patch' },
|
|
14
|
+
],
|
|
15
|
+
},
|
|
16
|
+
];
|
|
17
|
+
const getDefaultConfig = ({ repositoryUrl, releaseBranches = ['main', { name: 'rc', prerelease: true }], }) => {
|
|
18
|
+
return {
|
|
19
|
+
branches: releaseBranches,
|
|
20
|
+
repositoryUrl,
|
|
21
|
+
plugins: [
|
|
22
|
+
exports.commitAnalyzerPlugin,
|
|
23
|
+
[
|
|
24
|
+
'@semantic-release/release-notes-generator',
|
|
25
|
+
{
|
|
26
|
+
// cspell:ignore conventionalcommits
|
|
27
|
+
preset: 'conventionalcommits',
|
|
28
|
+
linkReferences: true,
|
|
29
|
+
presetConfig: {
|
|
30
|
+
types: [
|
|
31
|
+
{
|
|
32
|
+
type: 'bug',
|
|
33
|
+
section: '🐞 Bugs',
|
|
34
|
+
hidden: false,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
type: 'feat',
|
|
38
|
+
section: '✨ Features',
|
|
39
|
+
hidden: false,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
type: 'build',
|
|
43
|
+
section: '📦 Build',
|
|
44
|
+
hidden: false,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: 'doc',
|
|
48
|
+
section: '📄 Docs',
|
|
49
|
+
hidden: false,
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
[
|
|
56
|
+
'@semantic-release/gitlab',
|
|
57
|
+
{
|
|
58
|
+
gitlabUrl: 'https://git.astralnalog.ru',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
],
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
exports.getDefaultConfig = getDefaultConfig;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getDefaultConfig';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./getDefaultConfig"), exports);
|
|
@@ -26,6 +26,7 @@ export declare class ConfigService {
|
|
|
26
26
|
versionsFileName: string;
|
|
27
27
|
repositoryUrl: string;
|
|
28
28
|
releaseGroup?: string[];
|
|
29
|
+
releaseBranches?: import("semantic-release").BranchSpec[];
|
|
29
30
|
};
|
|
30
31
|
get packageExports(): import("../types").PackageExports | undefined;
|
|
31
32
|
get omitPackageJsonProps(): string[] | undefined;
|
|
@@ -47,6 +47,12 @@ exports.validateConfig = v.object({
|
|
|
47
47
|
semanticRelease: v.object({
|
|
48
48
|
repositoryUrl: v.string(),
|
|
49
49
|
releaseGroup: v.optional(v.array(v.arrayItem(v.string()))),
|
|
50
|
+
releaseBranches: v.optional(v.array(v.arrayItem(v.or(v.string(), v.object({
|
|
51
|
+
name: v.string(),
|
|
52
|
+
channel: v.optional(v.or(v.string(), v.boolean())),
|
|
53
|
+
range: v.optional(v.string()),
|
|
54
|
+
prerelease: v.optional(v.or(v.string(), v.boolean())),
|
|
55
|
+
}))))),
|
|
50
56
|
}),
|
|
51
57
|
packageExports: (value) => {
|
|
52
58
|
if (!value) {
|
package/config/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BranchSpec } from 'semantic-release';
|
|
1
2
|
export type CopyStaticFilesConfig = {
|
|
2
3
|
/**
|
|
3
4
|
* Используется glob паттерн
|
|
@@ -20,11 +21,33 @@ export type SemanticReleaseConfig = {
|
|
|
20
21
|
* Подменить версии этих пакетов в deps на текущую версию пакета
|
|
21
22
|
*/
|
|
22
23
|
releaseGroup?: string[];
|
|
24
|
+
/**
|
|
25
|
+
* Ветки для релизов (заменяют дефолтные ветки)
|
|
26
|
+
* Использует стандартный формат semantic-release BranchSpec
|
|
27
|
+
* @default ['main', { name: 'rc', prerelease: true }]
|
|
28
|
+
* @example [
|
|
29
|
+
* // Основная ветка
|
|
30
|
+
* 'main',
|
|
31
|
+
* // Prerelease с тэгом 'rc'
|
|
32
|
+
* { name: 'rc', prerelease: true },
|
|
33
|
+
* // В ветке v4 будут публиковаться релизы с тэгом 'rc'
|
|
34
|
+
* {
|
|
35
|
+
* name: 'v4',
|
|
36
|
+
* channel: 'rc',
|
|
37
|
+
* prerelease: true,
|
|
38
|
+
* },
|
|
39
|
+
* // Будут публиковаться релизы версий только для 3.x.x
|
|
40
|
+
* { name: 'v3', range: '3.x.x' },
|
|
41
|
+
* ]
|
|
42
|
+
*/
|
|
43
|
+
releaseBranches?: BranchSpec[];
|
|
23
44
|
};
|
|
24
45
|
export type PackageExportsItem = {
|
|
25
46
|
module: string;
|
|
26
47
|
require: string;
|
|
27
48
|
types: string;
|
|
49
|
+
default?: string;
|
|
50
|
+
import?: string;
|
|
28
51
|
} | string;
|
|
29
52
|
export type PackageExports = Record<string, PackageExportsItem>;
|
|
30
53
|
export type PackConfig = {
|
package/package.json
CHANGED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getDefaultConfig = exports.commitAnalyzerPlugin = exports.defaultBranches = void 0;
|
|
4
|
-
exports.defaultBranches = ['main', { name: 'rc', prerelease: true }];
|
|
5
|
-
exports.commitAnalyzerPlugin = [
|
|
6
|
-
'@semantic-release/commit-analyzer',
|
|
7
|
-
{
|
|
8
|
-
releaseRules: [
|
|
9
|
-
{ type: 'bug', release: 'patch' },
|
|
10
|
-
{ type: 'build', release: 'patch' },
|
|
11
|
-
{ type: 'feat', release: 'minor' },
|
|
12
|
-
{ type: 'refactor', release: 'patch' },
|
|
13
|
-
{ type: 'major', release: 'major' },
|
|
14
|
-
{ type: 'doc', release: 'patch' },
|
|
15
|
-
],
|
|
16
|
-
},
|
|
17
|
-
];
|
|
18
|
-
const getDefaultConfig = ({ repositoryUrl }) => ({
|
|
19
|
-
branches: exports.defaultBranches,
|
|
20
|
-
repositoryUrl,
|
|
21
|
-
plugins: [
|
|
22
|
-
exports.commitAnalyzerPlugin,
|
|
23
|
-
[
|
|
24
|
-
'@semantic-release/release-notes-generator',
|
|
25
|
-
{
|
|
26
|
-
// cspell:ignore conventionalcommits
|
|
27
|
-
preset: 'conventionalcommits',
|
|
28
|
-
linkReferences: true,
|
|
29
|
-
presetConfig: {
|
|
30
|
-
types: [
|
|
31
|
-
{
|
|
32
|
-
type: 'bug',
|
|
33
|
-
section: '🐞 Bugs',
|
|
34
|
-
hidden: false,
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
type: 'feat',
|
|
38
|
-
section: '✨ Features',
|
|
39
|
-
hidden: false,
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
type: 'build',
|
|
43
|
-
section: '📦 Build',
|
|
44
|
-
hidden: false,
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
type: 'doc',
|
|
48
|
-
section: '📄 Docs',
|
|
49
|
-
hidden: false,
|
|
50
|
-
},
|
|
51
|
-
],
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
],
|
|
55
|
-
[
|
|
56
|
-
'@semantic-release/gitlab',
|
|
57
|
-
{
|
|
58
|
-
gitlabUrl: 'https://git.astralnalog.ru',
|
|
59
|
-
},
|
|
60
|
-
],
|
|
61
|
-
],
|
|
62
|
-
});
|
|
63
|
-
exports.getDefaultConfig = getDefaultConfig;
|