@unmagic/vms 0.0.2 → 0.0.3-beta.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/bin/index.js +9 -1
- package/dist/build-package-B3ztw0_M.js +86 -0
- package/dist/cli-vfgVOW0G.js +818 -0
- package/dist/index.js +6 -2
- package/dist/{cli-BbBKrAPm.js → transformer-DjOYWuap.js} +5 -669
- package/package.json +1 -1
package/bin/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { program } from 'commander'
|
|
3
3
|
import { createRequire } from 'module'
|
|
4
|
-
import { runVMS } from '../dist/index.js'
|
|
4
|
+
import { runBuildPackage, runVMS } from '../dist/index.js'
|
|
5
5
|
const require = createRequire(import.meta.url)
|
|
6
6
|
const pkg = require('../package.json')
|
|
7
7
|
|
|
@@ -24,4 +24,12 @@ program
|
|
|
24
24
|
runVMS({ mode: 'development', upload: false })
|
|
25
25
|
})
|
|
26
26
|
|
|
27
|
+
// 组件包构建命令
|
|
28
|
+
program
|
|
29
|
+
.command('package')
|
|
30
|
+
.description('构建组件包(在组件包根目录下执行,输出到 dist/)')
|
|
31
|
+
.action(() => {
|
|
32
|
+
runBuildPackage()
|
|
33
|
+
})
|
|
34
|
+
|
|
27
35
|
program.parse()
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { transformFileAsync, transformAsync } from '@babel/core';
|
|
2
|
+
import { bold, green } from 'kolorist';
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { performance } from 'perf_hooks';
|
|
6
|
+
import { t as transformVueToMiniProgram, b as config } from './transformer-DjOYWuap.js';
|
|
7
|
+
import '@vue/compiler-sfc';
|
|
8
|
+
import 'node:fs';
|
|
9
|
+
import 'node:fs/promises';
|
|
10
|
+
import 'node:crypto';
|
|
11
|
+
import '@babel/parser';
|
|
12
|
+
import '@babel/types';
|
|
13
|
+
import '@babel/generator';
|
|
14
|
+
import '@babel/traverse';
|
|
15
|
+
import '@babel/code-frame';
|
|
16
|
+
import '@vue/compiler-dom';
|
|
17
|
+
import 'node:url';
|
|
18
|
+
import 'path';
|
|
19
|
+
import 'url';
|
|
20
|
+
import '@vue/compiler-core';
|
|
21
|
+
|
|
22
|
+
async function buildPackage() {
|
|
23
|
+
const cwd = process.cwd();
|
|
24
|
+
const packageJsonPath = path.join(cwd, 'package.json');
|
|
25
|
+
if (!(await fs.pathExists(packageJsonPath))) {
|
|
26
|
+
console.error('❌ 当前目录下未找到 package.json,请在组件包根目录下执行此命令');
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
const packageJson = await fs.readJson(packageJsonPath);
|
|
30
|
+
const sourceDir = path.join(cwd, 'src');
|
|
31
|
+
const outputDir = path.join(cwd, 'dist');
|
|
32
|
+
if (!(await fs.pathExists(sourceDir))) {
|
|
33
|
+
console.error('❌ 当前目录下未找到 src/ 目录');
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
// 清空 dist
|
|
37
|
+
await fs.remove(outputDir);
|
|
38
|
+
await fs.ensureDir(outputDir);
|
|
39
|
+
console.log(bold(green(`开始构建组件包 ${packageJson.name}...`)));
|
|
40
|
+
// 递归编译
|
|
41
|
+
const compileDir = async (dir) => {
|
|
42
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
43
|
+
for (const entry of entries) {
|
|
44
|
+
const fullPath = path.join(dir, entry.name);
|
|
45
|
+
const relativePath = path.relative(sourceDir, fullPath);
|
|
46
|
+
const outputPath = path.join(outputDir, relativePath);
|
|
47
|
+
if (entry.isDirectory()) {
|
|
48
|
+
if (entry.name === 'node_modules')
|
|
49
|
+
continue;
|
|
50
|
+
await fs.ensureDir(outputPath);
|
|
51
|
+
await compileDir(fullPath);
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (entry.name.endsWith('.vue')) {
|
|
55
|
+
const t = performance.now();
|
|
56
|
+
await transformVueToMiniProgram(fullPath, outputDir, false, async (generatedCode) => {
|
|
57
|
+
const result = await transformAsync(generatedCode, {
|
|
58
|
+
filename: fullPath.replace('.vue', '.js'),
|
|
59
|
+
...config,
|
|
60
|
+
});
|
|
61
|
+
return result?.code ?? generatedCode;
|
|
62
|
+
}, sourceDir);
|
|
63
|
+
console.log(bold(green(`✓ ${relativePath} (${(performance.now() - t).toFixed(0)}ms)`)));
|
|
64
|
+
}
|
|
65
|
+
else if (entry.name.endsWith('.ts')) {
|
|
66
|
+
const result = await transformFileAsync(fullPath, { ast: false, ...config });
|
|
67
|
+
if (result?.code) {
|
|
68
|
+
await fs.writeFile(outputPath.replace(/\.ts$/, '.js'), result.code);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else if (entry.name.endsWith('.js')) {
|
|
72
|
+
const result = await transformFileAsync(fullPath, { ast: false, ...config });
|
|
73
|
+
if (result?.code) {
|
|
74
|
+
await fs.writeFile(outputPath, result.code);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
await fs.copy(fullPath, outputPath);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
await compileDir(sourceDir);
|
|
83
|
+
console.log(bold(green(`构建完成,输出到 ${outputDir}`)));
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export { buildPackage };
|