-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
50 lines (47 loc) · 1.53 KB
/
gulpfile.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
const { src, dest, task } = require('gulp');
const fs = require('fs');
const rollup = require('rollup');
const tsLoader = require("rollup-plugin-typescript2");
/**
* AMEF单文件组件编译
* @param {string} src
* @param {string} dest
*/
const AMEFSFCCompile = async function(src) {
return new Promise((res) => {
fs.readFile(src, "utf-8", (err, data) => {
let script, style;
data = data.replace(/<script>([^]*)<\/script>/, (all, text) => {
script = text;
return "";
})
if (!script) throw Error("编译模板失败: " + src + " 没有<script>");
data = data.replace(/<style>([^]*)<\/style>/, (all, text) => {
style = text;
return "";
})
data = `\n$template = /* HTML */\`${data.trim().slice(10, -11)}\`;\n`;
script = `AMEF.register(${script.replace(/extends\s+AMEF\.Component\s+{/, (text) => {
return text + data;
})});`;
res({ script, style });
});
})
}
task('test', async() => {
const { script, style } = await AMEFSFCCompile("test/SFCtest.html");
fs.writeFile("_server/test/sfc.js", script, "utf-8", () => {});
fs.writeFile("_server/test/sfc.css", style, "utf-8", () => {});
})
task('release', async() => {
const bundle = await rollup.rollup({
input: 'src/AMEF.ts',
plugins: [
tsLoader()
],
});
bundle.write({
file: "dist/AMEF.js",
format: 'iife'
});
})