注意:最后exports.default的series中,必须在 clean 之后有个自定义匿名函数,不能直接将其他函数直接跟在clean之后,执行操作;
gulpfile.ts文件正确写法如下:
const { src, dest, series, parallel, task } = require("gulp");
/**插件模型 */
const plugin = {
/**压缩js文件插件 */
"uglify": require("gulp-uglify"),
/**删除文件工具 */
"clean": require("gulp-clean"),
/**文件系统插件 */
"fs": require("fs")
};
/**目录模型 */
const dir = {
/**源文件目录 */
"srcDir": {
/**源程序的根目录 */
"root": "./src/",
/**组件目录 */
"component": "./src/component/",
/**view视图文件所在目录 */
"viewDir": "./src/views/",
/**模型文件所在目录 */
"modelDir": "./src/models/"
},
/**目标程序的根目录 */
"destDir": {
/**目标目录的根目录 */
"root": "./dist/",
/**组件目录 */
"component": "./dist/Component/",
/**view视图文件所在目录 */
"viewDir": "./dist/views/",
/**模型文件所在目录 */
"modelDir": "./dist/models/"
}
};
/**清理目录 */
function cleanDist(): any {
return src(dir.destDir.root, { allowEmpty: true })
.pipe(plugin.clean());
}
/**copy所有组件 */
function componentCopyTo(): any {
return src(dir.srcDir.component + "**/*.js")
.pipe(plugin.uglify())
.pipe(dest(dir.destDir.component));
}
/**copy所有模型 */
function modelCopyTo(): any {
return src(dir.srcDir.modelDir + "**/*.js")
.pipe(plugin.uglify())
.pipe(dest(dir.destDir.modelDir));
}
/**copy所有视图文件 */
function viewCopyTo(): any {
return src(dir.srcDir.viewDir + "**/*.html")
.pipe(dest(dir.destDir.viewDir));
}
exports.default = series(cleanDist, async () => {
await componentCopyTo();
await modelCopyTo();
await viewCopyTo();
});