-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile-prod.js
85 lines (78 loc) · 2.24 KB
/
gulpfile-prod.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
// const gulp = require("gulp")//老版的
const {src,dest,series,parallel,watch} = require("gulp")
const path = require("path")
const rev = require("gulp-rev")
const revCollector = require("gulp-rev-collector")
const webpackStream = require("webpack-stream")
const gulpSass = require("gulp-sass")
//拷贝 index.html 到 dist
function copyhtml(){
return src("./*.html")
.pipe(dest("./dist"))
}
//拷贝libs下的文件到dist
function copylibs(){
return src("./src/libs/**/*")
.pipe(dest("./dist/libs"))
}
function copyimages(){
return src("./src/images/**/*")
.pipe(dest("./dist/images"))
}
function copyicons(){
return src("./src/icons/**/*")
.pipe(dest("./dist/icons"))
}
//编译js模块
function packJS(){
return src("./src/**/*")
.pipe(webpackStream({
mode: "production",
entry:{
app: "./src/app.js"
},
output: {
filename: "[name].js",//[name] == app
path: path.resolve(__dirname,"./dist")
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
options: {
presets: ["@babel/preset-env"],
plugins: ['@babel/plugin-transform-runtime']
}
}
},
{
test: /\.art$/,
loader: "string-loader"
}
]
}
}))
.pipe(rev())
.pipe(dest("./dist/scripts"))
.pipe(rev.manifest())
.pipe(dest("./rev/scripts"))
}
function revColl(){
return src(["./rev/**/*.json","./dist/*.html"])
.pipe(revCollector())
.pipe(dest("./dist"))
}
//编译css
function packCSS(){
return src('./src/styles/app.scss')
.pipe(gulpSass().on('error', gulpSass.logError))//抛出错误继续运行
.pipe(rev())
.pipe(dest("./dist/styles"))
.pipe(rev.manifest())
.pipe(dest("./rev/styles"))
}
// gulp.task("default", series(packjs, copyhtml, webserver))//串行
exports.default = series(parallel(packJS, packCSS, copylibs, copyimages, copyicons), copyhtml,revColl)