最近整理公司项目时 发现一些活动页面能够共用一套打包配置,由于基本功能项不会大变。结合实际需求,找到了gulp和browserify来配置。css
gulp
browserifynode
不废话操起键盘就是一顿梭git
mkdir gulp-demo // 新建文件夹
cd gulp-demo // 进入当前文件夹
npm init -y // 生成package.json
复制代码
创建相关开发文件夹和文件,结构以下【ps 也能够本身按需定制】
yarn add 或者 npm install
@babel/core
babel-preset-env
babelify
browserify
del
event-stream
gulp
gulp-base64
gulp-changed
gulp-connect
gulp-file-include
gulp-imagemin
gulp-plumber
gulp-postcss
gulp-rename
gulp-sass
gulp-sourcemaps
gulp-uglify
gulp-util
imagemin-pngquant
lodash.assign
postcss-px-to-viewport
vinyl-buffer
vinyl-source-stream
watchify -D
复制代码
和gulpfile.js同级 新建.babelrc文件而且配置es6
{
"presets": [
"env"
]
}
复制代码
gulpfile.jsnpm
// JavaScript
function compileJs(done, isWatch, isBuild) {
const getEntryJsFiles = () =>
glob.sync(config.paths.script + "/**/*.js", {
ignore: []
});
let files = getEntryJsFiles();
const bundleTasks = files.map(entry => {
var b = browserify(
assign({}, watchify.args, {
cache: {},
packageCache: {},
entries: [entry],
debug: true,
paths: ["./node_modules"] // 排除指定文件夹
})
);
b.transform(babelify); // 在这里加入变换操做
if (isWatch) {
var b = watchify(b);
}
if (isBuild) {
config.isDev = false;
config.sourceMap = false;
}
function bundle() {
return b
.bundle()
.pipe(plumber())
.pipe(source(entry))
.pipe(rename({ dirname: "", suffix: ".min" }))
.pipe(buffer())
.pipe(config.isDev ? sourcemaps.init() : gutil.noop())
.pipe(uglify())
.pipe(plumber.stop())
.pipe(config.sourceMap ? sourcemaps.write("maps") : gutil.noop())
.pipe(dest(config.pathsDev.script))
.pipe(connect.reload());
}
if (isWatch) {
b.on("update", bundle);
b.on("log", gutil.log);
}
return bundle();
});
if (isWatch) {
es.merge(bundleTasks).on("end", done);
}
}
// watch
function watchJs(done) {
compileJs(done, true);
}
function buildJs(done) {
compileJs(done, false, true);
done();
}
复制代码
后期再加上雪碧图和svg图标配置json