vue-ant-patterns
Version:
vue-ant-patterns
57 lines (49 loc) • 1.6 kB
JavaScript
const fs = require('fs-extra');
const path = require('path');
const mkdirp = require('mkdirp');
const readline = require('readline');
const rimraf = require('rimraf');
const gulp = require('gulp');
function copyExample(cwd) {
const _siteDir = path.join(cwd, '_site');
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(cwd) {
const _siteDir = path.join(cwd, '_site');
gulp.src(['mock']).pipe(gulp.dest(_siteDir));
}
function copyPublicConfig(cwd) {
const _siteDir = path.join(cwd, '_site');
gulp.src(['site/public-config.js']).pipe(gulp.dest(_siteDir));
}
class CopyExample {
constructor(opts = {}) {
this.cwd = path.join(__dirname, '../');
this._site = path.join(this.cwd, '_site');
this._examples = path.join(this._site, 'examples');
}
apply(compiler) {
const ID = 'generator-test-txt';
const _ = this;
const { _site, _examples, cwd } = this;
compiler.hooks.done.tap(ID, compilation => {
copyExample(this.cwd);
copyMock(this.cwd);
// copyPublicConfig(this.cwd);
});
}
}
module.exports = CopyExample;