This repository was archived by the owner on Mar 18, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathrollup.config.js
110 lines (97 loc) · 2.39 KB
/
rollup.config.js
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import fs from "fs";
import path from "path";
import resolve from "@rollup/plugin-node-resolve";
import sucrase from "@rollup/plugin-sucrase";
import replace from "@rollup/plugin-replace";
import typescript from "@rollup/plugin-typescript";
import { terser } from "rollup-plugin-terser";
const output_dir = "./dist";
const is_publish = !!process.env.PUBLISH;
const ts_plugin = is_publish
? typescript({
target: "es5",
include: "src/**",
outDir: output_dir,
typescript: require("typescript"),
})
: sucrase({
exclude: ['node_modules/**'],
transforms: ["typescript"],
});
const dump = (file) => path.join(output_dir, file);
const copy = (files) =>
files.forEach((file) => fs.copyFileSync(file, dump(file)));
const rmdir = (dir) => {
if (fs.existsSync(dir)) {
const files = fs.readdirSync(dir);
if (files.length > 0) {
files.forEach((file) => {
if (fs.statSync(path.join(dir, file)).isDirectory()) {
rmdir(dir + "/" + file);
} else {
fs.unlinkSync(path.join(dir, file));
}
});
}
}
};
const mkdir = (dir) => !(fs.existsSync(dir) && fs.statSync(dir).isDirectory()) && fs.mkdirSync(dir);
const types = (dest = "index.d.ts", src = "../types/index", module = "*") => {
return {
writeBundle() {
fs.writeFileSync(dump(dest), `export ${module} from "${src}";`);
},
};
};
const main = {
input: "src/index.ts",
output: [
{
exports: "default",
file: dump("index.js"),
format: "cjs"
}
],
plugins: [
ts_plugin,
resolve(),
replace({ "process.env.BROWSER": false }),
rmdir(output_dir),
mkdir(output_dir),
copy(["package.json", "README.md", "LICENSE"]),
types("index.d.ts", "./types/index", "*"),
],
external: [
"loader-utils",
"magic-string",
"windicss/lib",
"windicss/utils/parser",
"windicss/utils/style",
"postcss",
"postcss-nested"
]
};
const browser = {
input: "src/index.ts",
output: [
{
name: "windicss",
file: dump("browser.js"),
format: "umd",
}
],
plugins: [
ts_plugin,
resolve({ browser: true }),
terser({ module: true, output: { comments: 'some' } }),
replace({
"process.env.BROWSER": true,
"process.env.NODE_ENV": `"publish"`
})
],
external: [
"postcss",
"postcss-nested"
]
};
export default is_publish? [ main, browser ] : main;