feat: gulp
This commit is contained in:
parent
671157aee5
commit
57c3ad17ff
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
node_modules
|
26
gulpfile.js
Normal file
26
gulpfile.js
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
const gulp = require('gulp'),
|
||||||
|
gulpWatch = require('gulp-watch'), // 监听插件
|
||||||
|
gulpConnect = require('gulp-connect') // 服务器插件
|
||||||
|
|
||||||
|
// 监听
|
||||||
|
gulp.task('watch', function () {
|
||||||
|
gulp.watch('src/index.html', ['html'])
|
||||||
|
})
|
||||||
|
|
||||||
|
// 监听html变化
|
||||||
|
gulp.task('html', function () {
|
||||||
|
gulp.src('src/*.html')
|
||||||
|
.pipe(gulpConnect.reload())
|
||||||
|
});
|
||||||
|
|
||||||
|
// 服务器
|
||||||
|
gulp.task('connect', function () {
|
||||||
|
var serverConfig = {
|
||||||
|
root: 'src', // 从哪个目录开启server
|
||||||
|
port: 8080, // 将服务开启在哪个端口
|
||||||
|
livereload: true // 是否热更新
|
||||||
|
}
|
||||||
|
gulpConnect.server(serverConfig)
|
||||||
|
})
|
||||||
|
|
||||||
|
gulp.task("watching", ['connect', 'watch'])
|
200
gulpfile.temp.js
Normal file
200
gulpfile.temp.js
Normal file
@ -0,0 +1,200 @@
|
|||||||
|
const gulp = require('gulp'),
|
||||||
|
lp = require('gulp-load-plugins')() //改变前缀
|
||||||
|
, concat = lp.concat //合并js到一个js文件
|
||||||
|
, minifyCSS = lp.minifyCss //css压缩
|
||||||
|
, minify = lp.minify //整合 js
|
||||||
|
, zip = lp.zip //解压
|
||||||
|
, htmlmin = lp.htmlmin //html压缩
|
||||||
|
, autoPrefixer = lp.autoprefixer //添加前缀
|
||||||
|
, imagemin = lp.imagemin //图片压缩
|
||||||
|
, pngquant = require('imagemin-pngquant') //图片压缩拓展包
|
||||||
|
, inject = lp.inject //添加文件路径
|
||||||
|
, cache = lp.cache //图片改变时才开始操作
|
||||||
|
, rev = lp.revAppend //添加版本号
|
||||||
|
, runSequence = lp.runSequence //分批处理命令
|
||||||
|
, eslint = lp.eslint //代码风格校验 jshint
|
||||||
|
, watch = lp.watch //监视页面变化
|
||||||
|
, rename = lp.rename //重命名文件
|
||||||
|
, notify = lp.notify //加提示信息
|
||||||
|
, clean = lp.clean
|
||||||
|
, connect = lp.connect
|
||||||
|
, stylus = lp.stylus
|
||||||
|
, babel = lp.babel // es6 转 es5
|
||||||
|
, env = lp.env
|
||||||
|
, gulpif = lp.if
|
||||||
|
, minimist = require('minimist')
|
||||||
|
, lujin = 'imgUploader'
|
||||||
|
|
||||||
|
var knownOptions = {
|
||||||
|
string: 'env',
|
||||||
|
default: { env: process.env.NODE_ENV || 'production' }
|
||||||
|
};
|
||||||
|
|
||||||
|
var options = minimist(process.argv.slice(2), knownOptions);
|
||||||
|
|
||||||
|
console.log(options);
|
||||||
|
|
||||||
|
var serverPort = 'src/' + lujin + '/',
|
||||||
|
htmlSource = 'src/' + lujin + '/*.html',
|
||||||
|
htmlTarget = 'dist/' + lujin,
|
||||||
|
cssSource = './src/' + lujin + '/css/*.css',
|
||||||
|
cssTarget = './dist/' + lujin + '/css/',
|
||||||
|
stylusSource = './src/' + lujin + '/styl/*.styl',
|
||||||
|
stylusTarget = 'src/' + lujin + '/css',
|
||||||
|
jsSource = 'src/' + lujin + '/js/*.js',
|
||||||
|
jsTarget = './dist/' + lujin + '/js/',
|
||||||
|
imgSource = './src/' + lujin + '/img/*',
|
||||||
|
imgTarget = './dist/' + lujin + '/img/'
|
||||||
|
|
||||||
|
var target = gulp.src('./dist/index.html'),
|
||||||
|
sources = gulp.src(['./dist/js/*.js'])
|
||||||
|
|
||||||
|
|
||||||
|
gulp.task('scripts', function () {
|
||||||
|
return gulp.src('test.js')
|
||||||
|
.pipe(gulpif(options.env === 'production', minify())) // 仅在生产环境时候进行压缩
|
||||||
|
.pipe(gulp.dest('dist'));
|
||||||
|
});
|
||||||
|
|
||||||
|
// 文件路径
|
||||||
|
gulp.task('inject', function () {
|
||||||
|
var target = gulp.src('./src/alipayActive/index.html');
|
||||||
|
// It's not necessary to read the files (will speed up things), we're only after their paths:
|
||||||
|
var sources = gulp.src(['./src/alipayActive/js/*.js', './src/alipayActive/css/*.css'], {
|
||||||
|
read: false
|
||||||
|
});
|
||||||
|
|
||||||
|
return target.pipe(inject(sources))
|
||||||
|
.pipe(gulp.dest('./dist'));
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
// html文件处理
|
||||||
|
gulp.task('testHtml', function () {
|
||||||
|
var options = {
|
||||||
|
removeComments: true, //清除注释
|
||||||
|
collapseWhitespace: false, //压缩html
|
||||||
|
collapseBooleanAttributes: true, //省略布尔属性的值
|
||||||
|
removeEmptyAttributes: true, //删除所有空格作为属性值
|
||||||
|
removeScriptTypeAttributes: true, //删除script的type属性
|
||||||
|
removeStyleLinkTypeAttributes: true, //删除style的type属性
|
||||||
|
minifyJS: false, //压缩js
|
||||||
|
minifyCSS: true //压缩css
|
||||||
|
}
|
||||||
|
gulp.src(htmlSource)
|
||||||
|
.pipe(htmlmin(options))
|
||||||
|
.pipe(rev())
|
||||||
|
.pipe(gulp.dest(htmlTarget))
|
||||||
|
})
|
||||||
|
|
||||||
|
// 压缩js
|
||||||
|
gulp.task('compress', function (cb) {
|
||||||
|
gulp.src(jsSource)
|
||||||
|
// .pipe(concat('main.js')) //合并js
|
||||||
|
// .pipe(rename({ suffix: '.min' }))
|
||||||
|
// .pipe(gulp.dest(jsTarget))
|
||||||
|
.pipe(babel())
|
||||||
|
// // 方案一
|
||||||
|
.pipe(minify({
|
||||||
|
ext: {
|
||||||
|
src: '.js',
|
||||||
|
min: '.min.js'
|
||||||
|
},
|
||||||
|
exclude: ['tasks'],
|
||||||
|
ignoreFiles: ['.combo.js', '.min.js']
|
||||||
|
}))
|
||||||
|
.pipe(gulp.dest(jsTarget))
|
||||||
|
.pipe(notify({ message: 'js is complite!' }))
|
||||||
|
})
|
||||||
|
|
||||||
|
// 压缩css,加前缀
|
||||||
|
/*!
|
||||||
|
保留注释的格式
|
||||||
|
*/
|
||||||
|
|
||||||
|
gulp.task('stylus', function () {
|
||||||
|
gulp.src(stylusSource)
|
||||||
|
.pipe(stylus())
|
||||||
|
.pipe(gulp.dest(stylusTarget))
|
||||||
|
.pipe(connect.reload());
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('minicss', function () {
|
||||||
|
var opt = {
|
||||||
|
advanced: true, //是否开启高级优化,合并选择器啥的
|
||||||
|
keepSpecialComments: "*", //保留所有特殊前缀
|
||||||
|
keepBreaks: false, //是否保留换行
|
||||||
|
removeEmpty: false, // 是否删除空格
|
||||||
|
compatibility: "*" //启用兼容模式,’*‘是ie9以下,’ie7‘,’ie8‘可选
|
||||||
|
}
|
||||||
|
gulp.src(cssSource)
|
||||||
|
.pipe(autoPrefixer({
|
||||||
|
browsers: ['last 2 versions'], //兼容的限度
|
||||||
|
cascade: true //是否美化属性值
|
||||||
|
}))
|
||||||
|
.pipe(gulp.dest(cssTarget))
|
||||||
|
.pipe(minifyCSS(opt))
|
||||||
|
.pipe(rename({ suffix: '.min' }))
|
||||||
|
.pipe(gulp.dest(cssTarget))
|
||||||
|
.pipe(notify({ message: 'css is complete!' }))
|
||||||
|
})
|
||||||
|
|
||||||
|
// 压缩包
|
||||||
|
gulp.task('zip', () => {
|
||||||
|
gulp.src('src/*')
|
||||||
|
.pipe(zip('project.zip'))
|
||||||
|
.pipe(gulp.dest(htmlTarget))
|
||||||
|
})
|
||||||
|
|
||||||
|
// 图片压缩
|
||||||
|
gulp.task('testImagemin', function () {
|
||||||
|
// 将你默认的任务代码放在这
|
||||||
|
var opt = {
|
||||||
|
optimizationLevel: 3, //优化等级
|
||||||
|
progressive: false, //无损压缩
|
||||||
|
interlaced: false, //隔行扫描gif渲染
|
||||||
|
multipass: false, //多次优化svg,直到完全优化
|
||||||
|
use: [pngquant()] //使用pngquant深度压缩
|
||||||
|
}
|
||||||
|
gulp.src(imgSource)
|
||||||
|
.pipe(imagemin(opt))
|
||||||
|
.pipe(gulp.dest(imgTarget))
|
||||||
|
.pipe(notify({ message: 'image is complete!' }))
|
||||||
|
})
|
||||||
|
|
||||||
|
// 清除
|
||||||
|
gulp.task('clean', function () {
|
||||||
|
return gulp.src([htmlTarget, cssTarget, jsTarget, imgTarget], { read: false })
|
||||||
|
.pipe(clean())
|
||||||
|
})
|
||||||
|
|
||||||
|
// 监控
|
||||||
|
gulp.task('watch', function () {
|
||||||
|
gulp.watch(htmlSource, ['html'])
|
||||||
|
gulp.watch(stylusSource, ['stylus'])
|
||||||
|
gulp.watch(jsSource, ['html'])
|
||||||
|
})
|
||||||
|
// 服务器
|
||||||
|
gulp.task('connect', function () {
|
||||||
|
var serverConfig = {
|
||||||
|
root: serverPort, //从哪个目录开启server
|
||||||
|
port: 8080, //将服务开启在哪个端口
|
||||||
|
livereload: true
|
||||||
|
}
|
||||||
|
connect.server(serverConfig)
|
||||||
|
})
|
||||||
|
gulp.task('html', function () {
|
||||||
|
gulp.src(htmlSource)
|
||||||
|
.pipe(connect.reload());
|
||||||
|
});
|
||||||
|
|
||||||
|
// *执行命令*
|
||||||
|
gulp.task("watching", ['connect', 'watch']);
|
||||||
|
|
||||||
|
gulp.task("default", function (cb) {
|
||||||
|
runSequence(
|
||||||
|
'clean',
|
||||||
|
['testHtml', 'compress', 'minicss', 'testImagemin'],
|
||||||
|
cb
|
||||||
|
)
|
||||||
|
})
|
25
package.json
Normal file
25
package.json
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"name": "gulp-demo",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "gulpfile.js",
|
||||||
|
"scripts": {
|
||||||
|
"start": "gulp watching"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/j710328466/gulp-demo.git"
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/j710328466/gulp-demo/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/j710328466/gulp-demo#readme",
|
||||||
|
"dependencies": {
|
||||||
|
"gulp": "^3.9.1",
|
||||||
|
"gulp-connect": "^5.5.0",
|
||||||
|
"gulp-watch": "^5.0.0"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user