forked from vueComponent/ant-design-vue
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
105 lines (94 loc) · 2.61 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
'use strict'
const webpack = require('webpack')
const through2 = require('through2')
const path = require('path')
const gulp = require('gulp')
const readline = require('readline')
const fs = require('fs')
const rimraf = require('rimraf')
const mkdirp = require('mkdirp')
const cwd = process.cwd()
function dist (done) {
rimraf.sync(path.join(cwd, 'site-dist'))
process.env.RUN_ENV = 'PRODUCTION'
const webpackConfig = require(path.join(cwd, 'webpack.site.config.js'))
webpack(webpackConfig, (err, stats) => {
if (err) {
console.error(err.stack || err)
if (err.details) {
console.error(err.details)
}
return
}
const info = stats.toJson()
if (stats.hasErrors()) {
console.error(info.errors)
}
if (stats.hasWarnings()) {
console.warn(info.warnings)
}
const buildInfo = stats.toString({
colors: true,
children: true,
chunks: false,
modules: false,
chunkModules: false,
hash: false,
version: false,
})
console.log(buildInfo)
done(0)
})
}
function copyHtml () {
const rl = readline.createInterface({
input: fs.createReadStream(path.join(cwd, 'site/demoRoutes.js')),
})
rl.on('line', (line) => {
if (line.indexOf('path:') > -1) {
const name = line.split("'")[1].split("'")[0]
console.log('create path:', name)
const toPaths = [
`site-dist/components/${name}`,
// `site-dist/components/${name}-cn`,
`site-dist/iframe/${name}`,
// `site-dist/iframe/${name}-cn`,
]
toPaths.forEach(toPath => {
rimraf.sync(path.join(cwd, toPath))
mkdirp(path.join(cwd, toPath), function () {
fs.writeFileSync(path.join(cwd, `${toPath}/index.html`), fs.readFileSync(path.join(cwd, 'site-dist/index.html')))
})
})
}
})
const source = [
'docs/vue/*.md',
'*.md',
// '!components/vc-slider/**/*', // exclude vc-slider
]
gulp.src(source).pipe(through2.obj(function z (file, encoding, next) {
const paths = file.path.split('/')
const name = paths[paths.length - 1].split('.')[0].toLowerCase()
const toPaths = [
'site-dist/docs',
'site-dist/docs/vue',
`site-dist/docs/vue/${name}`,
`site-dist/docs/vue/${name}-cn`,
]
toPaths.forEach(toPath => {
mkdirp(path.join(cwd, toPath), function () {
fs.writeFileSync(path.join(cwd, `${toPath}/index.html`), fs.readFileSync(path.join(cwd, 'site-dist/index.html')))
})
})
next()
}))
}
gulp.task('site-dist', (done) => {
dist(() => {
copyHtml()
})
})
gulp.task('copy-html', () => {
copyHtml()
})