Compare commits

...

1 Commits
master ... gulp

Author SHA1 Message Date
57c3ad17ff feat: gulp 2022-05-25 12:35:39 +08:00
4 changed files with 252 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
node_modules

26
gulpfile.js Normal file
View 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
View 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以下ie7ie8可选
}
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
View 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"
}
}