@astral/pack 1.5.0 → 1.6.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 CHANGED
@@ -123,6 +123,29 @@ module.exports = defineConfig({
123
123
 
124
124
  Результирующий package.json не будет содержать `engines`.
125
125
 
126
+ ## Переопределение свойств package.json
127
+
128
+ Для переопределения свойств package.json необходимо использовать `overridePackageJson`:
129
+ ```js
130
+ module.exports = defineConfig({
131
+ ...config,
132
+ overridePackageJson: {
133
+ exports: {
134
+ './base': './biome.json',
135
+ }
136
+ },
137
+ });
138
+ ```
139
+
140
+ `exports` в результирующем package.json будет:
141
+ ```json
142
+ {
143
+ "exports": {
144
+ "./base": "./biome.json"
145
+ }
146
+ }
147
+ ```
148
+
126
149
  ## Отправка уведомлений в telegram
127
150
 
128
151
  Отправляет в telegram уведомление об успешном релизе пакета:
@@ -139,11 +162,11 @@ pack send-telegram-success-release --telegram-bot-token=$TELEGRAM_ASTRAL_UI_BOT_
139
162
 
140
163
  Отправляет в telegram уведомление об ошибке релиза пакета:
141
164
  ```shell
142
- pack send-telegram-fail-release --telegram-bot-token=$TELEGRAM_ASTRAL_UI_BOT_TOKEN --telegram-chat-id=$TELEGRAM_RELEASES_CHANNEL_ID --telegram-ci-job-id=$CI_JOB_ID
165
+ pack send-telegram-fail-release --telegram-bot-token=$TELEGRAM_ASTRAL_UI_BOT_TOKEN --telegram-chat-id=$TELEGRAM_RELEASES_CHANNEL_ID --telegramPipelineUrl=$CI_PIPELINE_URL
143
166
  ```
144
167
 
145
168
  Пример сообщения:
146
169
  ```
147
170
  ‼️Ошибка релиза @astral/pack
148
- https://git.astralnalog.ru/frontend.shared/pack/-/jobs/1239368
171
+ https://git.astralnalog.ru/frontend.shared/pack/-/pipelines/270356
149
172
  ```
@@ -10,17 +10,17 @@ const parseArgs = () => process.argv.reduce((result, arg) => {
10
10
  if (arg.includes('--packageVersion')) {
11
11
  result.packageVersion = getArgValue(arg);
12
12
  }
13
- if (arg.includes('--telegram-chat-id')) {
13
+ if (arg.includes('--telegramChatId')) {
14
14
  result.telegram.chatId = getArgValue(arg);
15
15
  }
16
- if (arg.includes('--telegram-bot-token')) {
16
+ if (arg.includes('--telegramBotToken')) {
17
17
  result.telegram.botToken = getArgValue(arg);
18
18
  }
19
- if (arg.includes('--telegram-package-name')) {
19
+ if (arg.includes('--telegramPackageName')) {
20
20
  result.telegram.packageName = getArgValue(arg);
21
21
  }
22
- if (arg.includes('--telegram-ci-job-id')) {
23
- result.telegram.ciJobId = getArgValue(arg);
22
+ if (arg.includes('--telegramPipelineUrl')) {
23
+ result.telegram.pipelineUrl = getArgValue(arg);
24
24
  }
25
25
  return result;
26
26
  }, { command: enums_1.CLICommand.Build, telegram: {} });
package/cli/types.d.ts CHANGED
@@ -6,6 +6,6 @@ export type CLIArgs = {
6
6
  chatId?: string;
7
7
  botToken?: string;
8
8
  packageName?: string;
9
- ciJobId?: string;
9
+ pipelineUrl?: string;
10
10
  };
11
11
  };
@@ -102,14 +102,27 @@ const initAdditionalCommonProps = (packageVersion, { semanticRelease, lang, targ
102
102
  }
103
103
  return packageJson;
104
104
  };
105
+ const initOverridePackageJson = ({ overridePackageJson }) => (originPackageJson) => {
106
+ if (!overridePackageJson) {
107
+ return originPackageJson;
108
+ }
109
+ return {
110
+ ...originPackageJson,
111
+ ...overridePackageJson,
112
+ };
113
+ };
105
114
  const generatePackageJson = async ({ packageVersion, originPackageJson }, config) => {
106
115
  services_1.logger.progress('Генерация package.json');
107
116
  const omitProps = initOmitProps(config);
108
117
  const updateReleaseGroup = initUpdatingReleaseGroup(config, packageVersion);
109
118
  const updateAdditionalCommonProps = initAdditionalCommonProps(packageVersion, config);
110
119
  const generateExports = initExportsGenerator(config);
111
- const packageJson = generateExports(omitProps(updateAdditionalCommonProps(updateReleaseGroup(originPackageJson))));
120
+ const overridePackageJson = initOverridePackageJson(config);
121
+ const packageJson = overridePackageJson(generateExports(omitProps(updateAdditionalCommonProps(updateReleaseGroup(originPackageJson)))));
112
122
  const { distPath } = config;
123
+ if (!fs_1.default.existsSync(distPath)) {
124
+ fs_1.default.mkdirSync(distPath);
125
+ }
113
126
  fs_1.default.writeFileSync(path_1.default.join(distPath, 'package.json'), JSON.stringify(packageJson, null, 2));
114
127
  services_1.logger.success('package.json успешно сформирован в ', distPath);
115
128
  };
@@ -3,7 +3,7 @@ type Params = {
3
3
  chatId?: string;
4
4
  botToken?: string;
5
5
  packageName?: string;
6
- ciJobId?: string;
6
+ pipelineUrl?: string;
7
7
  };
8
- export declare const sendTelegramFailRelease: ({ chatId, botToken, packageName, ciJobId }: Params, config: ConfigService) => Promise<void>;
8
+ export declare const sendTelegramFailRelease: ({ chatId, botToken, packageName, pipelineUrl }: Params, config: ConfigService) => Promise<void>;
9
9
  export {};
@@ -2,13 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sendTelegramFailRelease = void 0;
4
4
  const services_1 = require("../../../services");
5
- const sendTelegramFailRelease = async ({ chatId, botToken, packageName, ciJobId }, config) => {
6
- if (!ciJobId) {
7
- throw new Error('Не указан ciJobId');
5
+ const sendTelegramFailRelease = async ({ chatId, botToken, packageName, pipelineUrl }, config) => {
6
+ if (!pipelineUrl) {
7
+ throw new Error('Не указан pipelineUrl');
8
8
  }
9
- const { repositoryUrl } = config.semanticRelease;
10
9
  const telegram = (0, services_1.createTelegram)({ chatId, botToken });
11
10
  const { name } = config.parseOriginPackageJson({ ignoreMain: true });
12
- await telegram.sendMessage(`‼️ Ошибка релиза ${packageName || name}:\n ${repositoryUrl}/-/jobs/${ciJobId}`);
11
+ await telegram.sendMessage(`‼️ Ошибка релиза ${packageName || name}:\n ${pipelineUrl}`);
13
12
  };
14
13
  exports.sendTelegramFailRelease = sendTelegramFailRelease;
@@ -29,6 +29,7 @@ export declare class ConfigService {
29
29
  };
30
30
  get packageExports(): import("../types").PackageExports | undefined;
31
31
  get omitPackageJsonProps(): string[] | undefined;
32
+ get overridePackageJson(): Record<string, unknown> | undefined;
32
33
  parseOriginPackageJson: ({ ignoreMain, }?: {
33
34
  ignoreMain?: boolean;
34
35
  }) => PackageJson;
@@ -95,6 +95,9 @@ class ConfigService {
95
95
  get omitPackageJsonProps() {
96
96
  return this.config.omitPackageJsonProps;
97
97
  }
98
+ get overridePackageJson() {
99
+ return this.config.overridePackageJson;
100
+ }
98
101
  parseOriginPackageJson = ({ ignoreMain, } = {}) => {
99
102
  const packageJson = JSON.parse(fs_1.default.readFileSync(path_1.default.join(this.projectPath, 'package.json'), 'utf8'));
100
103
  if (!ignoreMain && !packageJson.main) {
@@ -71,4 +71,5 @@ exports.validateConfig = v.object({
71
71
  return errors[0];
72
72
  },
73
73
  omitPackageJsonProps: v.optional(v.array(v.arrayItem(v.string()))),
74
+ overridePackageJson: v.optional(v.object({})),
74
75
  });
package/config/types.d.ts CHANGED
@@ -55,5 +55,9 @@ export type PackConfig = {
55
55
  * Удаляет указанные props в сгенерированном package.json
56
56
  */
57
57
  omitPackageJsonProps?: string[];
58
+ /**
59
+ * Позволяет переопределить итоговый package.json
60
+ */
61
+ overridePackageJson?: Record<string, unknown>;
58
62
  };
59
63
  export type Lang = 'js' | 'ts';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astral/pack",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "main": "./index.js",
5
5
  "bin": {
6
6
  "pack": "bin.js"