发布于2021-05-30 11:53 阅读(1722) 评论(0) 点赞(16) 收藏(3)
安装 nodejs。保证 node 是 6 以上的版本。
C:\Users\AppData\Roaming\npm
创建一个简单的应用 gulp_test,文件结构如下:
|- gulpfile.js //gulp配置文件
|- package.json 不是必须的
npm install gulp -g 可以使用gulp命令
4. 局部安装gulp
npm install gulp --save-dev
配置编码: gulpfile.js
//引入gulp模块
const gulp = require('gulp');
//定义任务 第一个参数是任务的名字,第二个参数是执行任务的函数(回调函数)
gulp.task('任务名', function() {
console.log("明天放假啦")// 将你的任务的任务代码放在这
});
构建命令:
gulp 任务名
The following tasks did not complete: default
Did you forget to signal async completion?
错误的解决方法:
- 返回一个可读流
gulp.task('任务名', function() { return fs.createReadeStream(__dirname+"package.json") });
- 传入一个回调并执行
gulp.task('任务名', function(cb) { return cb() });
- 回调函数设置为 async 函数
gulp.task('任务名', async function() { console.log("明天放假啦")// 将你的任务的任务代码放在这 });
- 名字如果为default,那么任务名可以省略
gulp.task('defult', function() { console.log("明天放假啦")// 将你的任务的任务代码放在这 });
jshint 选项配置地址 https://jshint.com/docs/options/
.jshintrc
配置参考
{
"esversion": 6,
"asi":true, // 允许不写结尾处的分号
"undef": true, // 使用之前必须定义
"devel": true, // 没有定义也可以使用 console,alert 进行调试
"eqeqeq": true, // 强制使用 ===
"unused": true, // 定义了必须使用
"globals": { // 配置全局变量,直接使用不会报错
"module": true
}
}
使用步骤:
npm install jshint gulp-jshint --save-dev
const jshint = require('gulp-jshint')
gulp.task('jshint', function() {
// 将你的任务的任务代码放在这
return gulp.src('./src/js/*.js')//检查当前目录下src/js的所有JS文件
.pipe(jshint()) //管道
.pipe(jshint.reporter('default'));//输出检查结果
});
4.运行命令 gulp jshint
安装插件:
npm install --save-dev gulp-babel @babel/core @babel/preset-env
引入:
const babel = require('gulp-babel');
定义任务:
gulp.task('babel', () => {
return gulp.src('./src/js/*.js')
.pipe(babel({ //进行语法转换
presets: ['@babel/env']
})).pipe(gulp.dest('build/js'))//输出到指定目录
});
运行命令:
gulp babel
经过 babel 转换后的 ES6 模块化语法变成了 CommonJs 语法,还需要用 browserify 转换
安装插件:
npm install --save-dev gulp-browserify
安装插件(用于重命名)
npm install --save-dev gulp-rename
引入:
const browserify = require('gulp-browserify');
const rename = require('gulp-rename');
定义任务:
gulp.task('browserify', function() {
return gulp.src('./build/js/index.js')
.pipe(browserify()) //将CommonJs语法转换为浏览器能识别的语法
.pipe(rename('built.js')) //为了防止冲突将文件重命名
.pipe(gulp.dest('build/js')) //输出到指定位置
});
运行命令
gulp browserify
定义默认任务
gulp.task('default', gulp.series('jshint', 'babel', 'browserify'));
安装插件
npm install --save-dev gulp-uglify
引入插件
const uglify = require('gulp-uglify');
定义任务
gulp.task('uglify', function () {
return gulp.src('build/js/built.js')
.pipe(uglify()) //压缩js
.pipe(rename('dist.min.js'))
.pipe(gulp.dest('dist/js'))
});
运行命令
gulp uglify
安装插件
npm install gulp-less less-plugin-autoprefix -D
引入插件
const less = require('gulp-less');
const LessAutoprefix = require('less-plugin-autoprefix');
const autoprefix = new LessAutoprefix({ browsers: ['last 2 versions'] });兼容最后2个版本
定义任务:
gulp.task('less', function () {
return gulp.src('./src/less/*.less')
.pipe(less({
plugins: [autoprefix]//自动扩展前缀
}))
.pipe(gulp.dest('./build/css'));
});
运行命令:
gulp less
安装插件
npm install --save-dev gulp-concat
引入
const concat = require('gulp-concat');
定义任务
gulp.task('concat', function () {
return gulp.src('./build/css/*.css')
.pipe(concat('built.css'))
.pipe(gulp.dest('./build/css/concat'));
});
运行命令:gulp concat
安装插件:
npm install --save-dev gulp-cssmin
引入
const cssmin = require('gulp-cssmin');
定义任务
gulp.task('cssmin', function () {
return gulp.src('build/css/concat/built.css')
.pipe(cssmin())
.pipe(rename('dist.min.css'))
.pipe(gulp.dest('dist/css'));
});
npm install --save gulp-htmlmin
const htmlmin = require('gulp-htmlmin');
gulp.task('htmlmin', () => {
return gulp.src('src/index.html')
.pipe(htmlmin({
collapseWhitespace: true ,//去除空格
removeComments:true //去除注释
}))
.pipe(gulp.dest('dist'));
});
安装模块
npm install gulp-livereload gulp-connect opn --save-dev
引入模块
const livereload = require('gulp-livereload');
const connect = require('gulp-connect');
const opn = require('opn');
自动执行任务,编译代码
//1. 在所有可能要执行任务后面加上 .pipe(livereload());
gulp.task('watch', function () {
//2. 启动热加载服务
livereload.listen();
//3. 通过自己服务器打开项目,自动刷新
connect.server({
root: 'dist',
port: 3000,
livereload: true // 自动刷新
});
//3. 自动打开浏览器
opn('http://localhost:3000/index.html');
//4. 监视指定文件(第一个参数),一旦文件发生变化,就自动执行后面的任务(第二个参数)
gulp.watch('src/css/*.less', gulp.series(['less', 'concat', 'cssmin']));
gulp.watch('./src/js/*.js', gulp.series(['jshint', 'babel', 'browserify', 'uglify']));
gulp.watch('./src/index.html', gulp.series('htmlmin'));
});
备注:必须要在 src 文件夹中修改 index.html 中引入样式和脚本的路径,gulp 不会自动处理路径。
原文链接:https://blog.csdn.net/weixin_57218747/article/details/117304119
作者:西小口到了吗
链接:http://www.qianduanheidong.com/blog/article/115993/13e500266d2e47d5a50f/
来源:前端黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 前端黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-3
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!