'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() })