@rife/cli 0.0.6-beta.14 → 0.0.6-beta.16

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.
Files changed (71) hide show
  1. package/dist/cjs/logger.cjs +2 -0
  2. package/dist/cjs/plugin/commander.cjs +5 -5
  3. package/dist/cjs/plugin/config.cjs +4 -4
  4. package/dist/cjs/plugin/index.cjs +3 -12
  5. package/dist/cjs/plugin/package.cjs +2 -2
  6. package/dist/cjs/plugin/release.cjs +16 -16
  7. package/dist/cjs/runner.cjs +9 -6
  8. package/dist/cjs/sync.cjs +1 -1
  9. package/dist/cjs/util.cjs +2 -2
  10. package/dist/cli.js +22 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/esm/cli.mjs +1 -1
  13. package/dist/esm/index.mjs +1 -1
  14. package/dist/esm/logger.mjs +3 -1
  15. package/dist/esm/plugin/commander.mjs +6 -6
  16. package/dist/esm/plugin/config.mjs +6 -6
  17. package/dist/esm/plugin/index.mjs +1 -2
  18. package/dist/esm/plugin/package.mjs +4 -4
  19. package/dist/esm/plugin/release.mjs +17 -17
  20. package/dist/esm/runner.mjs +14 -11
  21. package/dist/esm/sync.mjs +2 -2
  22. package/dist/esm/util.mjs +4 -4
  23. package/dist/index.js +10 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/logger.js +18 -0
  26. package/dist/logger.js.map +1 -0
  27. package/dist/plugin/commander.js +47 -0
  28. package/dist/plugin/commander.js.map +1 -0
  29. package/{src/plugin/compiler/compiler.ts → dist/plugin/compiler/compiler.js} +39 -71
  30. package/dist/plugin/compiler/compiler.js.map +1 -0
  31. package/dist/plugin/compiler/index.js +87 -0
  32. package/dist/plugin/compiler/index.js.map +1 -0
  33. package/{src/plugin/compiler/swc.ts → dist/plugin/compiler/swc.js} +48 -56
  34. package/dist/plugin/compiler/swc.js.map +1 -0
  35. package/{src/plugin/compiler/tsc.ts → dist/plugin/compiler/tsc.js} +75 -101
  36. package/dist/plugin/compiler/tsc.js.map +1 -0
  37. package/dist/plugin/config.js +77 -0
  38. package/dist/plugin/config.js.map +1 -0
  39. package/dist/plugin/index.js +9 -0
  40. package/dist/plugin/index.js.map +1 -0
  41. package/dist/plugin/package.js +32 -0
  42. package/dist/plugin/package.js.map +1 -0
  43. package/dist/plugin/release.js +102 -0
  44. package/dist/plugin/release.js.map +1 -0
  45. package/dist/runner.js +82 -0
  46. package/dist/runner.js.map +1 -0
  47. package/dist/sync.js +60 -0
  48. package/dist/sync.js.map +1 -0
  49. package/dist/tsconfig.tsbuildinfo +1 -0
  50. package/dist/util.js +14 -0
  51. package/dist/util.js.map +1 -0
  52. package/package.json +8 -18
  53. package/src/cli.ts +23 -23
  54. package/src/index.ts +3 -9
  55. package/src/logger.ts +17 -16
  56. package/src/plugin/commander.ts +49 -49
  57. package/src/plugin/config.ts +78 -78
  58. package/src/plugin/index.ts +0 -1
  59. package/src/plugin/release.ts +113 -113
  60. package/src/runner.ts +132 -128
  61. package/src/sync.ts +63 -63
  62. package/src/util.ts +9 -9
  63. package/dist/cjs/plugin/compiler/compiler.cjs +0 -207
  64. package/dist/cjs/plugin/compiler/index.cjs +0 -126
  65. package/dist/cjs/plugin/compiler/swc.cjs +0 -107
  66. package/dist/cjs/plugin/compiler/tsc.cjs +0 -115
  67. package/dist/esm/plugin/compiler/compiler.mjs +0 -160
  68. package/dist/esm/plugin/compiler/index.mjs +0 -94
  69. package/dist/esm/plugin/compiler/swc.mjs +0 -75
  70. package/dist/esm/plugin/compiler/tsc.mjs +0 -73
  71. package/src/plugin/compiler/index.ts +0 -115
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;AAEA,oCAaC;AAfD,qCAAwC;AAExC,SAAgB,YAAY,CAAC,OAA6B;IACtD,MAAM,QAAQ,GAAG,IAAA,uBAAa,EAAC;QAC3B,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,gBAAgB;QAChB,aAAa,EAAE;YACX,eAAe;YACf,iBAAiB;YACjB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,KAAK;SACd;KACJ,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AACpB,CAAC"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pluginCommander = pluginCommander;
4
+ function pluginCommander() {
5
+ const plugin = {
6
+ name: pluginCommander.name,
7
+ apply: runner => {
8
+ const { hook, command, config, z, logger } = runner;
9
+ const log = logger.withTag(pluginCommander.name);
10
+ hook.registerCommand.tapPromise(pluginCommander.name, async () => {
11
+ command
12
+ .command('dev')
13
+ .description('启动开发')
14
+ .action(async () => {
15
+ process.env.NODE_ENV = 'development';
16
+ await hook.dev.promise();
17
+ });
18
+ command
19
+ .command('build')
20
+ .description('构建项目')
21
+ .action(async () => {
22
+ process.env.NODE_ENV = 'production';
23
+ await hook.build.promise();
24
+ });
25
+ command
26
+ .command('release')
27
+ .description('发布包')
28
+ .action(async () => {
29
+ await hook.release.promise();
30
+ });
31
+ command
32
+ .command('deploy')
33
+ .description('部署项目')
34
+ .action(async () => {
35
+ await hook.deploy.promise().catch(e => {
36
+ log.fail(`部署失败,${runner.duration},${e.message}`);
37
+ });
38
+ });
39
+ });
40
+ hook.startCommand.tapPromise(pluginCommander.name, async () => {
41
+ await command.parseAsync(process.argv);
42
+ });
43
+ },
44
+ };
45
+ return plugin;
46
+ }
47
+ //# sourceMappingURL=commander.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commander.js","sourceRoot":"","sources":["../../src/plugin/commander.ts"],"names":[],"mappings":";;AAEA,0CA8CC;AA9CD,SAAgB,eAAe;IAC3B,MAAM,MAAM,GAAW;QACnB,IAAI,EAAE,eAAe,CAAC,IAAI;QAC1B,KAAK,EAAE,MAAM,CAAC,EAAE;YACZ,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;YACpD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;gBAC7D,OAAO;qBACF,OAAO,CAAC,KAAK,CAAC;qBACd,WAAW,CAAC,MAAM,CAAC;qBACnB,MAAM,CAAC,KAAK,IAAI,EAAE;oBACf,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC;oBACrC,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC7B,CAAC,CAAC,CAAC;gBAEP,OAAO;qBACF,OAAO,CAAC,OAAO,CAAC;qBAChB,WAAW,CAAC,MAAM,CAAC;qBACnB,MAAM,CAAC,KAAK,IAAI,EAAE;oBACf,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAC;oBACpC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC/B,CAAC,CAAC,CAAC;gBAEP,OAAO;qBACF,OAAO,CAAC,SAAS,CAAC;qBAClB,WAAW,CAAC,KAAK,CAAC;qBAClB,MAAM,CAAC,KAAK,IAAI,EAAE;oBACf,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACjC,CAAC,CAAC,CAAC;gBAEP,OAAO;qBACF,OAAO,CAAC,QAAQ,CAAC;qBACjB,WAAW,CAAC,MAAM,CAAC;qBACnB,MAAM,CAAC,KAAK,IAAI,EAAE;oBACf,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;wBAClC,GAAG,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBACrD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;gBAC1D,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;QACP,CAAC;KACJ,CAAC;IACF,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -1,41 +1,18 @@
1
- import path from 'path';
2
-
3
- import { colors } from 'consola/utils';
4
- import type * as ts from 'typescript';
5
-
6
- import { swc } from './swc';
7
- import { tsc } from './tsc';
8
- import { Runner } from '../../runner';
9
-
10
- export interface TsxConfig {
11
- /** 默认:swc */
12
- type: 'tsc' | 'swc';
13
-
14
- /** 默认:. */
15
- rootDir: string;
16
-
17
- /** 默认:./dist/ */
18
- outDir: string;
19
-
20
- /** 默认:true */
21
- clean: boolean;
22
-
23
- /** 编译后入口启动文件 */
24
- main?: string;
25
-
26
- options?: any;
27
- }
28
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compileTs = compileTs;
4
+ exports.checkAndEmitType = checkAndEmitType;
5
+ exports.formatDiagnostic = formatDiagnostic;
6
+ const tslib_1 = require("tslib");
7
+ const path_1 = tslib_1.__importDefault(require("path"));
8
+ const utils_1 = require("consola/utils");
9
+ const swc_1 = require("./swc");
10
+ const tsc_1 = require("./tsc");
29
11
  const clear = () => {
30
12
  console.clear();
31
13
  process.stdout.write('\x1b[3J');
32
14
  };
33
-
34
- export async function compileTs(
35
- runner: Runner,
36
- tsxConfig: TsxConfig,
37
- { dev, build }: { dev?: boolean; build?: boolean } = { dev: false, build: true },
38
- ) {
15
+ async function compileTs(runner, tsxConfig, { dev, build } = { dev: false, build: true }) {
39
16
  const { logger, fs } = runner;
40
17
  const log = logger.withTag(compileTs.name);
41
18
  log.debug('tsxConfig %j', tsxConfig);
@@ -45,12 +22,12 @@ export async function compileTs(
45
22
  }
46
23
  const showProjectName = () => {
47
24
  clear();
48
- console.log(`${colors.bgBlue(' 项目名称 ')} ${runner.package.name} \n`);
25
+ console.log(`${utils_1.colors.bgBlue(' 项目名称 ')} ${runner.package.name} \n`);
49
26
  };
50
27
  if (tsxConfig.type === 'tsc') {
51
- const diagnostics: ts.Diagnostic[] = [];
28
+ const diagnostics = [];
52
29
  let perfStart = performance.now();
53
- tsc({
30
+ (0, tsc_1.tsc)({
54
31
  ...tsxConfig,
55
32
  watch: dev,
56
33
  onWatchStatusChanged: data => {
@@ -93,7 +70,8 @@ export async function compileTs(
93
70
  if (diagnostics.length) {
94
71
  log.error(`编译失败,耗时 ${duration} s\n\n%s`, formatDiagnostic(diagnostics));
95
72
  runner.compiler.fail = true;
96
- } else {
73
+ }
74
+ else {
97
75
  log.success(`编译成功,耗时 ${duration} s`);
98
76
  }
99
77
  },
@@ -101,8 +79,8 @@ export async function compileTs(
101
79
  return;
102
80
  }
103
81
  if (tsxConfig.type === 'swc') {
104
- const { promise, resolve } = Promise.withResolvers<void>();
105
- swc({
82
+ const { promise, resolve } = Promise.withResolvers();
83
+ (0, swc_1.swc)({
106
84
  ...tsxConfig,
107
85
  watch: dev,
108
86
  onSuccess: async ({ watch, first, duration }) => {
@@ -126,12 +104,12 @@ export async function compileTs(
126
104
  }
127
105
  const message = [...reasons.entries()]
128
106
  .map(([key, value]) => {
129
- const index = value.indexOf(key);
130
- if (index > -1) {
131
- return value.replace(key, path.resolve(key));
132
- }
133
- return `${value}`;
134
- })
107
+ const index = value.indexOf(key);
108
+ if (index > -1) {
109
+ return value.replace(key, path_1.default.resolve(key));
110
+ }
111
+ return `${value}`;
112
+ })
135
113
  .join('\n');
136
114
  log.error(`编译失败,耗时 ${(duration / 1000).toFixed(3)} s\n\n%s`, message);
137
115
  runner.compiler.fail = true;
@@ -146,16 +124,14 @@ export async function compileTs(
146
124
  log.error(`compiler type '${tsxConfig.type}' 不存在`);
147
125
  process.exit(1);
148
126
  }
149
-
150
- export function checkAndEmitType() {
127
+ function checkAndEmitType() {
151
128
  const perfStart = performance.now();
152
- const ts: typeof import('typescript') = require('typescript');
153
- const tsConfigPath = path.resolve('tsconfig.json');
129
+ const ts = require('typescript');
130
+ const tsConfigPath = path_1.default.resolve('tsconfig.json');
154
131
  // 读取 tsconfig.json 文件
155
132
  const configFile = ts.readConfigFile(tsConfigPath, ts.sys.readFile);
156
-
157
133
  // 解析 tsconfig.json 文件
158
- const compilerOptions = ts.parseJsonConfigFileContent(configFile.config, ts.sys, path.dirname(tsConfigPath), {
134
+ const compilerOptions = ts.parseJsonConfigFileContent(configFile.config, ts.sys, path_1.default.dirname(tsConfigPath), {
159
135
  noEmit: true,
160
136
  incremental: false,
161
137
  });
@@ -163,36 +139,28 @@ export function checkAndEmitType() {
163
139
  compilerOptions.options.noEmit = false;
164
140
  compilerOptions.options.emitDeclarationOnly = true;
165
141
  }
166
-
167
142
  // 获取编译器实例
168
143
  const host = ts.createCompilerHost(compilerOptions.options);
169
144
  const program = ts.createProgram(compilerOptions.fileNames, compilerOptions.options, host);
170
-
171
145
  // 执行编译
172
146
  const emitResult = program.emit();
173
-
174
147
  // 处理编译结果
175
148
  const diagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics);
176
-
177
149
  const duration = ((performance.now() - perfStart) / 1000).toFixed(3);
178
-
179
150
  return { diagnostics, duration };
180
151
  }
181
-
182
- export function formatDiagnostic(diagnostics: readonly ts.Diagnostic[]) {
183
- const ts: typeof import('typescript') = require('typescript');
184
- const { colors }: typeof import('consola/utils') = require('consola/utils');
185
-
152
+ function formatDiagnostic(diagnostics) {
153
+ const ts = require('typescript');
154
+ const { colors } = require('consola/utils');
186
155
  return diagnostics
187
156
  .map(diagnostic => {
188
- const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n');
189
- if (diagnostic.file) {
190
- const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start!);
191
- return `${colors.gray(diagnostic.file.fileName)} ${colors.yellow(`(${line + 1},${character + 1})`)}: ${colors.white(
192
- message,
193
- )}`;
194
- }
195
- return message;
196
- })
157
+ const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n');
158
+ if (diagnostic.file) {
159
+ const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
160
+ return `${colors.gray(diagnostic.file.fileName)} ${colors.yellow(`(${line + 1},${character + 1})`)}: ${colors.white(message)}`;
161
+ }
162
+ return message;
163
+ })
197
164
  .join('\n');
198
165
  }
166
+ //# sourceMappingURL=compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/plugin/compiler/compiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pluginCompiler = pluginCompiler;
4
+ const compiler_1 = require("./compiler");
5
+ const util_1 = require("../../util");
6
+ function pluginCompiler(options) {
7
+ const plugin = {
8
+ name: pluginCompiler.name,
9
+ apply: runner => {
10
+ const { hook, logger, z, tapable, fs } = runner;
11
+ const log = logger.withTag(pluginCompiler.name);
12
+ const validation = z
13
+ .object({
14
+ tsx: z
15
+ .object({
16
+ type: z.enum(['tsc', 'swc']).default('swc'),
17
+ rootDir: z.string().trim().min(1).default('.'),
18
+ outDir: z.string().trim().min(1).default('./dist/'),
19
+ clean: z.boolean().default(true),
20
+ main: z.string().trim().optional(),
21
+ options: z.object({}).passthrough().optional(),
22
+ })
23
+ .default({}),
24
+ })
25
+ .optional()
26
+ .default({})
27
+ .safeParse(options);
28
+ if (!validation.success) {
29
+ log.error('配置错误\n', validation.error.message);
30
+ process.exit(1);
31
+ }
32
+ runner.compiler = {
33
+ fail: false,
34
+ process: null,
35
+ hook: {
36
+ checkAndEmitType: new tapable.AsyncSeriesHook(),
37
+ execMain: new tapable.AsyncSeriesHook(),
38
+ },
39
+ tsx: validation.data.tsx,
40
+ };
41
+ hook.dev.tapPromise(pluginCompiler.name, async () => {
42
+ const tsxConfig = validation.data.tsx;
43
+ (0, compiler_1.compileTs)(runner, tsxConfig, { dev: true });
44
+ });
45
+ hook.build.tapPromise(pluginCompiler.name, async () => {
46
+ const perfStart = performance.now();
47
+ const tsxConfig = validation.data.tsx;
48
+ await (0, compiler_1.compileTs)(runner, tsxConfig, { build: true });
49
+ if (runner.compiler.fail) {
50
+ log.fail(`构建失败,${(0, util_1.getDuration)(perfStart)}`);
51
+ process.exit(1);
52
+ }
53
+ else {
54
+ log.success(`构建成功,${(0, util_1.getDuration)(perfStart)}`);
55
+ }
56
+ });
57
+ runner.compiler.hook.checkAndEmitType.tapPromise(pluginCompiler.name, async () => {
58
+ const { diagnostics, duration } = (0, compiler_1.checkAndEmitType)();
59
+ if (diagnostics.length) {
60
+ log.error(`类型检查失败,耗时 ${duration} s\n\n%s`, (0, compiler_1.formatDiagnostic)(diagnostics));
61
+ runner.compiler.fail = true;
62
+ }
63
+ else {
64
+ log.success(`类型检查成功,耗时 ${duration} s`);
65
+ }
66
+ });
67
+ runner.compiler.hook.execMain.tapPromise(pluginCompiler.name, async () => {
68
+ const compiler = runner.compiler;
69
+ const { main } = compiler.tsx;
70
+ if (!main) {
71
+ log.debug('没有指定 main');
72
+ return;
73
+ }
74
+ if (!(await fs.exists(main))) {
75
+ log.warn(`启动文件不存在 %s`, main);
76
+ return;
77
+ }
78
+ log.info(`启动文件 node %s`, main);
79
+ const { fork } = require('child_process');
80
+ compiler.process?.kill();
81
+ compiler.process = fork(main, { stdio: 'inherit' });
82
+ });
83
+ },
84
+ };
85
+ return plugin;
86
+ }
87
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugin/compiler/index.ts"],"names":[],"mappings":";;AA2BA,wCAuFC;AA9GD,yCAAsF;AAEtF,qCAAyC;AAqBzC,SAAgB,cAAc,CAAC,OAA+B;IAC1D,MAAM,MAAM,GAAW;QACnB,IAAI,EAAE,cAAc,CAAC,IAAI;QACzB,KAAK,EAAE,MAAM,CAAC,EAAE;YACZ,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;YAChD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,CAAC;iBACf,MAAM,CAAC;gBACJ,GAAG,EAAE,CAAC;qBACD,MAAM,CAAC;oBACJ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;oBAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;oBAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;oBACnD,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;oBAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;oBAClC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;iBACjD,CAAC;qBACD,OAAO,CAAC,EAAE,CAAC;aACnB,CAAC;iBACD,QAAQ,EAAE;iBACV,OAAO,CAAC,EAAE,CAAC;iBACX,SAAS,CAAC,OAAO,CAAC,CAAC;YAExB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACtB,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YAED,MAAM,CAAC,QAAQ,GAAG;gBACd,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE;oBACF,gBAAgB,EAAE,IAAI,OAAO,CAAC,eAAe,EAAE;oBAC/C,QAAQ,EAAE,IAAI,OAAO,CAAC,eAAe,EAAE;iBAC1C;gBACD,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG;aAC3B,CAAC;YAEF,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;gBAChD,MAAM,SAAS,GAAc,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;gBACjD,IAAA,oBAAS,EAAC,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;gBAClD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBACpC,MAAM,SAAS,GAAc,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;gBACjD,MAAM,IAAA,oBAAS,EAAC,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpD,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACvB,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAA,kBAAW,EAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oBAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACJ,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAA,kBAAW,EAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAClD,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;gBAC7E,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAA,2BAAgB,GAAE,CAAC;gBACrD,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;oBACrB,GAAG,CAAC,KAAK,CAAC,aAAa,QAAQ,UAAU,EAAE,IAAA,2BAAgB,EAAC,WAAW,CAAC,CAAC,CAAC;oBAC1E,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACJ,GAAG,CAAC,OAAO,CAAC,aAAa,QAAQ,IAAI,CAAC,CAAC;gBAC3C,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;gBACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACjC,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC;gBAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;oBACR,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACvB,OAAO;gBACX,CAAC;gBAED,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBAC3B,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;oBAC7B,OAAO;gBACX,CAAC;gBAED,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;gBAE/B,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,eAAe,CAAmC,CAAC;gBAC5E,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;gBACzB,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACP,CAAC;KACJ,CAAC;IACF,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -1,56 +1,48 @@
1
- import type { TsxConfig } from './compiler';
2
-
3
- export interface SwcConfig extends TsxConfig {
4
- watch?: boolean;
5
- options?: any;
6
- onSuccess?: (data: { watch: boolean; first: boolean; duration: number }) => any;
7
- onFail?: (data: { watch: boolean; first: boolean; duration: number; reasons: Map<string, string> }) => any;
8
- }
9
-
10
- export async function swc(options: SwcConfig) {
11
- const { watch = false, outDir } = options;
12
- const { swcDir } = require('@swc/cli');
13
-
14
- // https://swc.rs/docs/configuration/swcrc
15
- const swcOptions = {
16
- jsc: {
17
- parser: {
18
- syntax: 'typescript',
19
- },
20
- target: 'esnext',
21
- externalHelpers: true,
22
- },
23
- module: {
24
- type: 'commonjs',
25
- // type: 'es6',
26
- ignoreDynamic: true,
27
- },
28
- sourceMaps: true,
29
- };
30
-
31
- let first = true;
32
-
33
- await swcDir({
34
- cliOptions: {
35
- outDir,
36
- watch,
37
- filenames: ['./src'],
38
- extensions: ['.ts', '.tsx', '.js', '.jsx'],
39
- stripLeadingPaths: true,
40
- copyFiles: true,
41
- },
42
- swcOptions,
43
- callbacks: {
44
- onSuccess: ({ duration }: any) => {
45
- options?.onSuccess?.({ watch, first, duration });
46
- first = false;
47
- },
48
- onFail: (e: any) => {
49
- options?.onFail?.({ ...e, watch, first });
50
- // 不退出,下次修复报错后清空屏幕
51
- first = false;
52
- },
53
- onWatchReady: () => {},
54
- },
55
- });
56
- }
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.swc = swc;
4
+ async function swc(options) {
5
+ const { watch = false, outDir } = options;
6
+ const { swcDir } = require('@swc/cli');
7
+ // https://swc.rs/docs/configuration/swcrc
8
+ const swcOptions = {
9
+ jsc: {
10
+ parser: {
11
+ syntax: 'typescript',
12
+ },
13
+ target: 'esnext',
14
+ externalHelpers: true,
15
+ },
16
+ module: {
17
+ type: 'commonjs',
18
+ // type: 'es6',
19
+ ignoreDynamic: true,
20
+ },
21
+ sourceMaps: true,
22
+ };
23
+ let first = true;
24
+ await swcDir({
25
+ cliOptions: {
26
+ outDir,
27
+ watch,
28
+ filenames: ['./src'],
29
+ extensions: ['.ts', '.tsx', '.js', '.jsx'],
30
+ stripLeadingPaths: true,
31
+ copyFiles: true,
32
+ },
33
+ swcOptions,
34
+ callbacks: {
35
+ onSuccess: ({ duration }) => {
36
+ options?.onSuccess?.({ watch, first, duration });
37
+ first = false;
38
+ },
39
+ onFail: (e) => {
40
+ options?.onFail?.({ ...e, watch, first });
41
+ // 不退出,下次修复报错后清空屏幕
42
+ first = false;
43
+ },
44
+ onWatchReady: () => { },
45
+ },
46
+ });
47
+ }
48
+ //# sourceMappingURL=swc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swc.js","sourceRoot":"","sources":["../../../src/plugin/compiler/swc.ts"],"names":[],"mappings":";;AASA,kBA8CC;AA9CM,KAAK,UAAU,GAAG,CAAC,OAAkB;IACxC,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC1C,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvC,0CAA0C;IAC1C,MAAM,UAAU,GAAG;QACf,GAAG,EAAE;YACD,MAAM,EAAE;gBACJ,MAAM,EAAE,YAAY;aACvB;YACD,MAAM,EAAE,QAAQ;YAChB,eAAe,EAAE,IAAI;SACxB;QACD,MAAM,EAAE;YACJ,IAAI,EAAE,UAAU;YAChB,eAAe;YACf,aAAa,EAAE,IAAI;SACtB;QACD,UAAU,EAAE,IAAI;KACnB,CAAC;IAEF,IAAI,KAAK,GAAG,IAAI,CAAC;IAEjB,MAAM,MAAM,CAAC;QACT,UAAU,EAAE;YACR,MAAM;YACN,KAAK;YACL,SAAS,EAAE,CAAC,OAAO,CAAC;YACpB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;YAC1C,iBAAiB,EAAE,IAAI;YACvB,SAAS,EAAE,IAAI;SAClB;QACD,UAAU;QACV,SAAS,EAAE;YACP,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAO,EAAE,EAAE;gBAC7B,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACjD,KAAK,GAAG,KAAK,CAAC;YAClB,CAAC;YACD,MAAM,EAAE,CAAC,CAAM,EAAE,EAAE;gBACf,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1C,kBAAkB;gBAClB,KAAK,GAAG,KAAK,CAAC;YAClB,CAAC;YACD,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;SACzB;KACJ,CAAC,CAAC;AACP,CAAC"}
@@ -1,101 +1,75 @@
1
- import type { ChildProcess } from 'child_process';
2
- import path from 'path';
3
-
4
- import type * as ts from 'typescript';
5
-
6
- import type { TsxConfig } from './compiler';
7
-
8
- type Status = 'startWatch' | 'reCompile' | 'error' | 'success' | '';
9
- export interface TscConfig extends TsxConfig {
10
- watch?: boolean;
11
- options?: ts.CompilerOptions;
12
- onWatchStatusChanged?: (data: { status: Status; message: string }) => any;
13
- onReportDiagnostic?: (data: { diagnostic: ts.Diagnostic }) => any;
14
- onEmitDiagnostics?: (data: { diagnostics: ts.Diagnostic[] }) => any;
15
- }
16
- export function tsc(config: TscConfig) {
17
- const logger = console;
18
- const ts: typeof import('typescript') = require('typescript');
19
- // https://github.com/microsoft/TypeScript/wiki/Using-the-Compiler-API#writing-an-incremental-program-watcher
20
-
21
- const rootDir = config.rootDir || '.';
22
-
23
- const formatHost: ts.FormatDiagnosticsHost = {
24
- getCanonicalFileName: path => path,
25
- getCurrentDirectory: ts.sys.getCurrentDirectory,
26
- getNewLine: () => ts.sys.newLine,
27
- };
28
-
29
- function reportDiagnostic(diagnostic: ts.Diagnostic) {
30
- config.onReportDiagnostic?.({ diagnostic });
31
- }
32
-
33
- /**
34
- * Prints a diagnostic every time the watch status changes.
35
- * This is mainly for messages like "Starting compilation" or "Compilation completed".
36
- */
37
- let a: ChildProcess | any;
38
- function reportWatchStatusChanged(diagnostic: ts.Diagnostic) {
39
- const message = `${ts.formatDiagnostic(diagnostic, formatHost)}`.trimEnd();
40
- let status: Status = '';
41
- if (message.includes('message TS6031: Starting compilation in watch mode')) {
42
- status = 'startWatch';
43
- } else if (message.includes('message TS6032: File change detected')) {
44
- status = 'reCompile';
45
- } else if (message.includes('Found 0 errors')) {
46
- status = 'success';
47
- } else if (/Found \d+ error/.test(message)) {
48
- status = 'error';
49
- }
50
-
51
- config.onWatchStatusChanged?.({ status, message });
52
- }
53
-
54
- const configPath = ts.findConfigFile(rootDir, ts.sys.fileExists, 'tsconfig.json');
55
- if (!configPath) {
56
- throw new Error('找不到tsconfig.json');
57
- }
58
-
59
- const createProgram = ts.createSemanticDiagnosticsBuilderProgram;
60
-
61
- if (config.watch) {
62
- const host = ts.createWatchCompilerHost(
63
- configPath,
64
- {
65
- ...config.options,
66
- outDir: config.outDir,
67
- noEmit: false,
68
- incremental: true,
69
- },
70
- ts.sys,
71
- createProgram,
72
- reportDiagnostic,
73
- reportWatchStatusChanged,
74
- );
75
-
76
- ts.createWatchProgram(host);
77
- } else {
78
- // 读取 tsconfig.json 文件
79
- const configFile = ts.readConfigFile(configPath, ts.sys.readFile);
80
-
81
- // 解析 tsconfig.json 文件
82
- const compilerOptions = ts.parseJsonConfigFileContent(configFile.config, ts.sys, path.dirname(configPath), {
83
- ...config.options,
84
- outDir: config.outDir,
85
- noEmit: false,
86
- incremental: false,
87
- });
88
-
89
- // 获取编译器实例
90
- const host = ts.createCompilerHost(compilerOptions.options);
91
- const program = ts.createProgram(compilerOptions.fileNames, compilerOptions.options, host);
92
-
93
- // 执行编译
94
- const emitResult = program.emit();
95
-
96
- // 处理编译结果
97
- const diagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics);
98
-
99
- config.onEmitDiagnostics?.({ diagnostics });
100
- }
101
- }
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tsc = tsc;
4
+ const tslib_1 = require("tslib");
5
+ const path_1 = tslib_1.__importDefault(require("path"));
6
+ function tsc(config) {
7
+ const logger = console;
8
+ const ts = require('typescript');
9
+ // https://github.com/microsoft/TypeScript/wiki/Using-the-Compiler-API#writing-an-incremental-program-watcher
10
+ const rootDir = config.rootDir || '.';
11
+ const formatHost = {
12
+ getCanonicalFileName: path => path,
13
+ getCurrentDirectory: ts.sys.getCurrentDirectory,
14
+ getNewLine: () => ts.sys.newLine,
15
+ };
16
+ function reportDiagnostic(diagnostic) {
17
+ config.onReportDiagnostic?.({ diagnostic });
18
+ }
19
+ /**
20
+ * Prints a diagnostic every time the watch status changes.
21
+ * This is mainly for messages like "Starting compilation" or "Compilation completed".
22
+ */
23
+ let a;
24
+ function reportWatchStatusChanged(diagnostic) {
25
+ const message = `${ts.formatDiagnostic(diagnostic, formatHost)}`.trimEnd();
26
+ let status = '';
27
+ if (message.includes('message TS6031: Starting compilation in watch mode')) {
28
+ status = 'startWatch';
29
+ }
30
+ else if (message.includes('message TS6032: File change detected')) {
31
+ status = 'reCompile';
32
+ }
33
+ else if (message.includes('Found 0 errors')) {
34
+ status = 'success';
35
+ }
36
+ else if (/Found \d+ error/.test(message)) {
37
+ status = 'error';
38
+ }
39
+ config.onWatchStatusChanged?.({ status, message });
40
+ }
41
+ const configPath = ts.findConfigFile(rootDir, ts.sys.fileExists, 'tsconfig.json');
42
+ if (!configPath) {
43
+ throw new Error('找不到tsconfig.json');
44
+ }
45
+ const createProgram = ts.createSemanticDiagnosticsBuilderProgram;
46
+ if (config.watch) {
47
+ const host = ts.createWatchCompilerHost(configPath, {
48
+ ...config.options,
49
+ outDir: config.outDir,
50
+ noEmit: false,
51
+ incremental: true,
52
+ }, ts.sys, createProgram, reportDiagnostic, reportWatchStatusChanged);
53
+ ts.createWatchProgram(host);
54
+ }
55
+ else {
56
+ // 读取 tsconfig.json 文件
57
+ const configFile = ts.readConfigFile(configPath, ts.sys.readFile);
58
+ // 解析 tsconfig.json 文件
59
+ const compilerOptions = ts.parseJsonConfigFileContent(configFile.config, ts.sys, path_1.default.dirname(configPath), {
60
+ ...config.options,
61
+ outDir: config.outDir,
62
+ noEmit: false,
63
+ incremental: false,
64
+ });
65
+ // 获取编译器实例
66
+ const host = ts.createCompilerHost(compilerOptions.options);
67
+ const program = ts.createProgram(compilerOptions.fileNames, compilerOptions.options, host);
68
+ // 执行编译
69
+ const emitResult = program.emit();
70
+ // 处理编译结果
71
+ const diagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics);
72
+ config.onEmitDiagnostics?.({ diagnostics });
73
+ }
74
+ }
75
+ //# sourceMappingURL=tsc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsc.js","sourceRoot":"","sources":["../../../src/plugin/compiler/tsc.ts"],"names":[],"mappings":"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"}