榆山数据端小程序
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.

88 lines
2.6 KiB

5 years ago
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");
5 years ago
const autoprefixer = require("autoprefixer")
const postcss = require("gulp-postcss")
5 years ago
// 打包的名称
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())
5 years ago
.pipe(postcss([autoprefixer(["iOS >= 8", "Android >= 4.1"])]))
5 years ago
.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",
5 years ago
"!src/**/*.ts",
"!src/{scripts,scripts/**}"
5 years ago
], {base: "src", allowEmpty: true})
.pipe(plumber())
5 years ago
.pipe(changed(packageName))
5 years ago
.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"));