-
Notifications
You must be signed in to change notification settings - Fork 7
/
buildSpecial.mjs
69 lines (64 loc) · 1.73 KB
/
buildSpecial.mjs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/**
* vite目前并不能构建多个特殊库,但是可以通过配置多个lib来解决
* github并没有找到解决办法,但是目前这种方式或许是最优的解决方式
*/
import { build } from 'vite'
import { resolve } from 'path'
import { fileURLToPath } from 'url'
/**
* 在 ES 模块中,__dirname 不是一个全局变量,因为它是 CommonJS 模块的一部分。
*/
const __dirname = fileURLToPath(new URL('.', import.meta.url))
/**
* @Array 特殊构建库的根路径
* 规定:必须由大写组成文件夹,其文件夹内必须统一由main.ts导出具体的模块['Vue', 'WeChat']
*/
const libMap = [
{
entry: resolve(__dirname, `./lib/special/Vue/main.ts`),
name: `AtomToolsVue`,
filename: 'index',
format: 'umd'
},
{
entry: resolve(__dirname, `./lib/special/WeChat/main.ts`),
name: `AtomToolsWeChat`,
filename: 'index',
format: 'cjs'
}
]
libMap.forEach(async (lib) => {
const config = {
configFile: false,
base: './',
resolve: {
alias: {
'@': resolve(__dirname, 'lib')
}
},
build: {
// 必须要逐个指定 lib 配置,否则会出现部分配置不生效的情况
lib: {
entry: lib.entry,
name: lib.name,
fileName: lib.filename // 使用模板字符串
},
rollupOptions: {
output: {
// 确保格式是 cjs
format: lib.format,
name: lib.name,
// 指定输出目录
dir: resolve(__dirname, `dist/${lib.name}`)
}
}
}
}
try {
console.log('Built...')
await build(config)
console.log(`Built library: ${lib.name}`)
} catch (error) {
console.error(`Error building library: ${lib.name}`, error)
}
})