设为首页 收藏本站
查看: 1423|回复: 0

[经验分享] Gulp的安装配置过程和一些小坑

[复制链接]

尚未签到

发表于 2017-2-25 06:02:39 | 显示全部楼层 |阅读模式
  谈谈gulp。
  项目尾声,老师叫我去熟悉一下grunt前端自动化工具,第一次知道这种东西,我就查各种资料啊,发现grunt已经‘过时’了,大家都用gulp和webpack。我当然选择了配置最简单的gulp=-=
  gulp是基于Nodejs的自动任务运行器,基本流程就是先安装nodejs,通过nodejs的npm全局安装和项目安装gulp,其次在项目里安装所需要的gulp插件,然后新建gulp的配置文件gulpfile.js并写好配置信息(定义gulp任务),最后通过命令提示符运行gulp(webstorm神器更简单)。
  安装nodejs就不说了,一步步默认,打开cmd控制台,直接查看node版本,检测是否安装成功
DSC0000.png

  全局安装gulp,出现warn不要紧,等他慢慢转,表示正在联网下载...



npm install -g gulp
  全局安装完成后,通过cmd进入项目目录创建package.json文件,这是基于nodejs项目必不可少的配置文件,它是存放在项目根目录的普通json文件:
DSC0001.png

  直接在后面加上 -y 会自动生成,省去一步步的选择填空操作。
  接着在cmd项目目录下开始本地安装gulp各种插件,在这里找你需要的插件。有四个是用得最多的,必备的
  1、语法检查   (gulp-jshint)
  2、合并文件   (gulp-concat)
  3、压缩代码   (gulp-uglify)
  4、文件重命名   (gulp-rename)
  就拿gulp-jshint举例吧,在cmd项目目录下输入



npm install gulp-jshint --save-dev
  --save-dev 是可以省掉你手动修改package.json文件的步骤,正常情况下得连同版本号手动将他们添加到模块配置文件package.json中的依赖里
DSC0002.png

  安装配置完成,要开始写代码啦。
  在项目目录下新建Gulpfile.js文件,gulp有五种方法:task,run,watch,src,和dest.



//引入组件
1 var gulp = require('gulp');
2
3 var jshint = require('gulp-jshint');
4 var concat = require('gulp-concat');
5 var uglify = require('gulp-uglify');
6 var rename = require('gulp-rename');
7 var clean = require('gulp-clean');
8 var minify_css = require('gulp-minify-css');
9
//创建任务
10 gulp.task('hint',function(){
11   return gulp.src(['a.js', 'b.js', 'c.js'])
12     .pipe(jshint())
13     .pipe(jshint.reporter('default'));
14 });
15
16 gulp.task('script', function () {
17   return gulp.src(['a.js', 'b.js', 'c.js'])
18     .pipe(concat('ABC.js'))
19     .pipe(gulp.dest('application'))
20     .pipe(uglify())
21     .pipe(rename({suffix: '.min'}))
22     .pipe(gulp.dest('application'));
23 });
24
25 gulp.task('css1', function () {
26   return gulp.src('dist/css/d.css')
27     .pipe(minify_css())
28     .pipe(rename({suffix: '.min'}))
29     .pipe(gulp.dest('application'));
30 });
31
32 gulp.task('css2', function () {
33   return gulp.src(['dist/css/e.css', 'dist/css/f.css'])
34     .pipe(concat('EF.css'))
35     .pipe(gulp.dest('application'))
36     .pipe(minify_css())
37     .pipe(rename({suffix: '.min'}))
38     .pipe(gulp.dest('application'));
39 });
40
41 gulp.task('watch', function () {
42   gulp.watch(['a.js', 'b.js', 'c.js'], ['script']);
43   gulp.watch('dist/css/d.css', ['css1']);
44   gulp.watch(['dist/css/e.css', 'dist/css/f.css'], ['css2']);
45 });
46
47 gulp.task('clean', function () {
48   return gulp.src('application', {read: false})
49     .pipe(clean());
50 });
51
52 gulp.task('default', ['clean'], function () {
53   gulp.run('hint','script', 'css1', 'css2', 'watch');
54 });
  代码很简单,也很容易理解,来谈谈我遇到的一点小小的坑。
  代码敲完,需要回到命令行,运行gulp。直接输入gulp,就开始运行,期间会报一些error,不要紧张,指的是js文件里一些语法错误,无伤大雅,成功创建出压缩文件才是最终目的。
  那么如果需要修改代码,必须一直把cmd控制台保持打开状态,否则无法执行watch操作。第一点坑,就是编辑器的自动保存功能,一行代码如果写的不顺,或是中途打岔,比如‘$scope.’,还没接着写完,编辑器自动保存的功能会使jshint检查出语法错误,导致gulp的停止运行。如果用的是webstrom编辑器的,可以不用每次打开命令行,右键选中gulpfile.js,show gulp tasks,再点击default即可。
DSC0003.jpg

  操作过程中,我遇到的第二个坑就是clean插件的使用问题上。最开始我写的代码不是像上面那样,watch任务是直接在script,css任务最后执行,最后两块写的是



gulp.task('default', ['clean', 'less', 'images', 'js', 'watch']);
  之后怎么都不能好好工作,原来,在default里面的任务是同步操作的!!是会出现边编译边删除的的情况的!!还是一步一步来,不要想着一步到位。先创建watch任务,再创建clean,最后default的时候,不要把clean写在run里面,配置一个异步就搞定了。
  这是修改编辑器(webstrom)自动保存的:
DSC0004.png

  好了,好了。
  第一次写这玩意,很多地方都得自己再搞清楚一遍才敢往上写,对自己提升还是很有帮助的。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-346727-1-1.html 上篇帖子: Windows下使用Visual Studio Code搭建Go语言环境 下篇帖子: centos7 安装wekan 看板
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表