vue-ant-patterns
Version:
vue-ant-patterns
115 lines (106 loc) • 2.7 kB
JavaScript
;
const webpack = require('webpack');
const through2 = require('through2');
const path = require('path');
const gulp = require('gulp');
const readline = require('readline');
const fs = require('fs-extra');
const rimraf = require('rimraf');
const mkdirp = require('mkdirp');
const cwd = process.cwd();
const _siteDir = path.join(cwd, '_site');
function dist(done) {
rimraf.sync(_siteDir);
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() {
fs.writeFileSync(path.join(cwd, '_site/404.html'), fs.readFileSync(path.join(cwd, 'site/404.html')));
fs.writeFileSync(path.join(cwd, '_site/index-cn.html'), fs.readFileSync(path.join(cwd, '_site/index.html')));
}
function copyExample() {
const examples = ['site/dev-demo/**/*.vue', 'biz/*/examples/*vue', 'components/**/examples/*.vue'];
gulp.src(examples).pipe(
gulp.dest(function(file) {
const filePath = file.path;
const relativePath = filePath.replace(cwd, '');
const reg = /^\/(components|biz)/;
let pth = relativePath;
if (reg.test(relativePath)) {
pth = relativePath.replace(/^\/(components|biz)/, '').replace('examples/', '');
file.dirname = path.dirname(file.dirname);
}
return path.join(_siteDir, 'examples');
}),
);
}
function copyMock() {
gulp.src(['mock/**']).pipe(gulp.dest(path.join(_siteDir, 'mock')));
}
function copyPublicConfig() {
gulp.src(['site/public-config.js']).pipe(gulp.dest(_siteDir));
}
gulp.task(
'_site',
gulp.series(done => {
dist(() => {
copyHtml();
copyExample();
copyMock();
copyPublicConfig();
done();
});
}),
);
gulp.task(
'_dist',
gulp.series(done => {
dist(() => {
// copyHtml();
// copyExample();
// copyMock();
// copyPublicConfig();
// done();
});
}),
);
gulp.task(
'copy-html',
gulp.series(() => {
copyExample();
copyPublicConfig();
}),
);
gulp.task(
'copy-mock',
gulp.series(() => {
copyMock();
}),
);