-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
116 lines (102 loc) · 2.87 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
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
111
112
113
114
115
116
'use strict';
// 编译css
const projectName = 'ng-element-plus';
const {
series,
src,
dest
} = require('gulp');
const sass = require('gulp-dart-sass');
const autoprefixer = require('gulp-autoprefixer');
const cssmin = require('gulp-cssmin');
function compile() {
return src(`./projects/${projectName}/${projectName}.scss`)
.pipe(sass.sync())
.pipe(autoprefixer({
browsers: ['ie > 9', 'last 2 versions'],
cascade: false
}))
.pipe(cssmin())
.pipe(dest(`./dist/${projectName}`));
}
function copyfont() {
return src('./node_modules/element-theme-chalk/src/fonts/**')
.pipe(dest(`./dist/${projectName}/fonts`));
}
function copyReadme() {
return src('./README.md')
.pipe(dest(`./projects/${projectName}`))
}
exports.buildDemoCmp = series(clearDemoComponent, clearDoc, demoComponentPath, docPath, copyReadme);
exports.buildReadme = series(copyReadme);
exports.build = series(compile, copyfont);
// 编译demo到assets
const watch = require('gulp-watch');
const rename = require('gulp-rename');
const clean = require('gulp-clean');
function clearDemoComponent() {
return src(['./src/assets/codes/'], {
read: false,
allowEmpty: true
})
.pipe(clean());
}
function clearDoc() {
return src(['./src/assets/docs/'], {
read: false,
allowEmpty: true
})
.pipe(clean());
}
function demoComponentPath() {
return src([`./projects/${projectName}/**/demo/*.component.ts`])
.pipe(rename(function (path) {
return {
dirname: '',
basename: path.basename,
extname: ''
};
}))
.pipe(dest('./src/assets/codes/'));
}
function docPath() {
return src([`./projects/${projectName}/*/doc/*.md`])
.pipe(rename(function (path) {
const name = path.dirname.slice(0, path.dirname.indexOf('\\'));
return {
dirname: '',
basename: name,
extname: ''
};
}))
.pipe(dest('./src/assets/docs/'));
}
function monitorAssets() {
return watch([`./projects/${projectName}/**/demo/*.component.ts`, `./projects/${projectName}/*/doc/*.md`], function (file) {
const source = file.history[0];
if (source.indexOf('demo') > -1) {
const path = source.slice(source.lastIndexOf('\\') + 1);
const name = path.slice(0, path.lastIndexOf('.'));
copyDemoComponent(source, name);
} else {
let name = source.slice(source.lastIndexOf(projectName) + projectName.length + 1);
name = name.slice(0, name.indexOf('\\'));
copyDoc(source, name);
}
});
}
function copyDemoComponent(source, name) {
return src(source, {
allowEmpty: true
})
.pipe(rename(name))
.pipe(dest('./src/assets/codes/'));
}
function copyDoc(source, name) {
return src(source, {
allowEmpty: true
})
.pipe(rename(name))
.pipe(dest('./src/assets/docs/'));
}
exports.serve = series(clearDemoComponent, clearDoc, demoComponentPath, docPath, monitorAssets);