You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.4 KiB
83 lines
2.4 KiB
const gulp = require("gulp");
|
|
const plumber = require("gulp-plumber"); // 发生错误时 阻止gulp退出并输出日志
|
|
const rename = require("gulp-rename"); // 输出时重命名文件
|
|
const cssnano = require("gulp-cssnano"); // css 代码压缩
|
|
const ts = require("gulp-typescript"); // ts转js插件
|
|
const tsProject = ts.createProject("./tsconfig.json"); // 读取 ts 配置文件
|
|
const sass = require("gulp-sass"); // css预处理器
|
|
const clean = require("gulp-clean");
|
|
const changed = require("gulp-changed"); // 仅编译或打包改变过的文件
|
|
const debug = require("gulp-debug");
|
|
const eslint = require("gulp-eslint");
|
|
|
|
// 打包的名称
|
|
const packageName = "miniprogram"
|
|
|
|
// ts编译成js
|
|
gulp.task("build:typescript", () => {
|
|
return gulp.src(["src/**/*.ts"], {base: "src"})
|
|
.pipe(plumber())
|
|
.pipe(changed(packageName, {extension: ".js"}))
|
|
.pipe(debug({title: "编译ts:"}))
|
|
.pipe(tsProject())
|
|
.js.pipe(gulp.dest(packageName))
|
|
})
|
|
|
|
// css预处理-sass
|
|
gulp.task("build:scss", () => {
|
|
return gulp.src(["src/**/*.scss"], {base: "src"})
|
|
.pipe(plumber())
|
|
.pipe(changed(packageName, {extension: ".wxss"}))
|
|
.pipe(debug({title: "编译scss:"}))
|
|
.pipe(sass())
|
|
.pipe(
|
|
cssnano({
|
|
zindex: false,
|
|
autoprefixer: false,
|
|
discardComments: { removeAll: true}
|
|
})
|
|
)
|
|
.pipe(
|
|
rename(path => {
|
|
path.extname = ".wxss"
|
|
})
|
|
)
|
|
.pipe(gulp.dest(packageName))
|
|
})
|
|
|
|
// 清理输出目录
|
|
gulp.task("build:clean", () => {
|
|
return gulp.src(packageName, {read: false})
|
|
.pipe(clean())
|
|
});
|
|
|
|
// eslint 校验代码风格
|
|
gulp.task("build:eslint", () => {
|
|
return gulp.src("src/**")
|
|
.pipe(eslint({
|
|
configFile: "./.eslintrc.js"
|
|
}))
|
|
.pipe(eslint.format())
|
|
});
|
|
|
|
// 处理脚本、模板和配置文件
|
|
gulp.task("build:main", gulp.series(gulp.parallel("build:scss", "build:typescript"), () => {
|
|
return gulp.src([
|
|
"src/**/*",
|
|
"!src/**/*.scss",
|
|
"!src/**/*.ts"
|
|
], {base: "src", allowEmpty: true})
|
|
.pipe(plumber())
|
|
.pipe(gulp.dest(packageName))
|
|
}));
|
|
|
|
function watch () {
|
|
let watcher = gulp.watch("src/**", gulp.series("build:main"), cb => cb());
|
|
watcher.on("all", (event, path, stats) => {
|
|
console.log(`File ${path} has ${event}, runing tasks...,${stats}`)
|
|
});
|
|
return watcher
|
|
}
|
|
|
|
gulp.task("serve", gulp.series(watch));
|
|
gulp.task("build", gulp.series("build:main"));
|