node入门(二)——gulpfile.js初探
本文关于gulpfile.js怎么写,利于完成个性化需求。本文开发环境默认已安装node,详情参考《node入门(一)——安装》。
一、安装gulp
npm install -g gulp
二、进入项目根目录,创建package.json文件
npm init

现在项目目录下新增了package.json文件,内容如下:

三、在package.json里增加devDependencies配置项,告诉node在install时要下载哪些插件模块,例如下面是要加载gulp-less插件:

gulp-less后面的^3.0.5是限定该插件的版本>=3.0.5且<4.0.0,避免项目后期出现不可预料的相关问题。插件的版本号这样查看:
npm list
^开头的版本号解释如下:
^1.2.x := >=1.2.0 <2.0.0
^0.0.x := >=0.0.0 <0.1.0
^0.0 := >=0.0.0 <0.1.0
四、安装插件:
npm install
由于我们已经创建了package.json,并且添加了devDependencies配置,所以npm install会默认去下载devDependencies中的插件。否则install后面需要加插件名称,很麻烦,不推荐这样做。
五、在根目录下创建gulpfile.js文件。
插件已经安装好了,现在是利用它做一些事情的时候。
var gulp = require('gulp'); //requires the core Gulp library
var g = require('gulp-load-plugins')(); //read the dependencies in the package.json file and inject each of them for us.
gulp.task('default',function(){
//运行gulp,会执行这里的代码
});
任务名称是default的任务会在运行gulp时默认执行,当然我们可以建立其他任务,比如前面我们安装了gulp-less插件,我们现在就可以利用它来创建一个任务。
首先去npm官网查询插件说明,比如gulp-less:

然后我们知道了该插件的作用和用法,官网说明第一步是安装该插件,我们已经通过上面的步骤做了,所以不必重复,然后是用法,选择合适自己的用法即可,比如我选择了编译less并压缩编译后的css:

发现压缩css还需要gulp-minify-css插件,自行添加到package.json的配置项中,然后再次运行npm install。然后在gulpfile中新增名为less的task:
var gulp = require('gulp');
var g = require('gulp-load-plugins')();
//compress less & minify css
gulp.task('less', function () {
return gulp.src(paths.app.less)
.pipe(g.less())
.pipe(g.minifyCss())
.pipe(gulp.dest(paths.dist.css));
});
解释一下上面的代码:require加载gulp和gulp-load-plugins模块后,通过下面的代码创建名为less的task:
gulp.task('less', function () {
//your code here
});
gulp.src(paths.app.less)//找到路径为paths.app.less的所有的文件。
pipe理解为管道,上一步处理完的数据会进来继续处理,处理完毕流到下一个管道。所以这里先pipe(g.less())是用less()函数处理上一步匹配到的数据。
pipe(g.minifyCss())用minifyCss函数处理上一步流过来的数据。
pipi(gulp.dest(paths.app.css))继续处理流过来的数据,通过dest方法把他们输出到paths.app.css目录。我这里的目录是用json配置的,不配置的话直接写目录就好,比如这样子:./app/css
任务写好之后,我们这样执行特定任务,比如执行刚写好的less任务:
gulp less
那么现在你会写gulpfile了吗?剩下的事情就是多任务的组合利用了,注意要提供多种任务入口,开发调试,发布,检测等等,自己权衡分配 。
参考资料:
1、gulp中文网(gulp基础知识) http://www.gulpjs.com.cn/docs/getting-started/
2、smashingmagazine(gulp博文) https://www.smashingmagazine.com/2014/06/building-with-gulp/
3、npm官方文档(版本号说明) https://docs.npmjs.com/misc/semver
4、npm官方文档(package说明) https://www.npmjs.com/
node入门(二)——gulpfile.js初探的更多相关文章
- node入门(三)——gulp运用实例
在上一篇<node入门(二)——gulpfile.js初探>中,我们知道了(看懂入门二及其参考资料)怎么运用gulp来更高效的开发,现在来示范一下. 在package.json里面配置好d ...
- 初探JavaScript(二)——JS如何动态操控HTML
除去五一三天,我已经和<JavaScript Dom编程艺术>磨合了六天,第一印象很好.慢慢的,我发现这是一块排骨,除了肉还有骨头.遇到不解的地方就会多看几遍,实在不懂的先跳过,毕竟,初次 ...
- Node.js初探之hello world
昨天公司内部培训,主讲人王老板对Node.js评价很高,连用几个“变态”来形容,恰好今天周末,有时间来认识下Node.js,对一门新语言最好的认识,是让其输出“hello world”,今天我就利用N ...
- Node.js初探之GET方式传输
Node.js初探之GET方式传输 例子:form用GET方法向后台传东西 html文件: <form action="http://localhost:8080/aaa" ...
- [整理]Node入门 » 一本全面的Node.js教程 - Demo实践所遇到的问题
花了一个上午看完[转载]Node入门 » 一本全面的Node.js教程 根据里面的Demo自己手动实现过程中还是遇到了些问题,特整理在此. <1>.由于node.msi安装包已经自动添加了 ...
- 《Node入门》读书笔记——用Node.js开发一个小应用
Android APP的开发告一段落,一个稳定的.实现了基本功能的APP已经交付用户使用了!我和老板交流了下,接下来准备转战Node.js了,而且一部分前端的功能也要做进去!哈哈哈~~~接下来要朝一个 ...
- gulp的使用(二)之gulpfile.js文件的配置
Gulpfile.js是什么文件: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她, ...
- Node入门教程(6)第五章:node 模块化(上)模块化演进
node 模块化 JS 诞生的时候,仅仅是为了实现网页表单的本地校验和简单的 dom 操作处理.所以并没有模块化的规范设计. 项目小的时候,我们可以通过命名空间.局部作用域.自执行函数等手段实现变量不 ...
- openlayers5-webpack 入门开发系列一初探篇(附源码下载)
前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...
随机推荐
- 【Android数据存储】- File
个人学习整理.如有不足之处,请不吝不吝赐教. 转载请注明:@CSU-Max 读写本应用程序数据目录中的文件 此种方法读写的文件在/data/data/<应用程序包名>中 ...
- shell操作Hbase
status:查询集群的一些状态 hbase(main):002:0> status1 active master, 0 backup masters, 1 servers, 0 dead, 3 ...
- CocoaPoda在iOS开发中的使用
CocoaPoda在iOS开发中的使用 CocoaPods 简介 CocoaPods是iOS开发中不可避免的依赖管理第三方的工具,能简化一些第三方库文件需要添加编译参数及依赖库的繁复工作 CocoaP ...
- 2016/04/29 ①cms分类 ② dede仿站制作 步骤 十个步骤 循环生成菜单 带子菜单的菜单 标签 栏目 栏目内容列表 内容图片列表
cms 系统还有: phpcms 企业站 Xiaocms 织梦 企业站 wordpress (博客) Ecshop 商城 Ecmall 多用户 Discms 记账 方维 订餐 团购 CMS ...
- What Is the Linux Lokkit Utility? https://www.lifewire.com/what-is-lokkit-2192255
lokkit: The Lokkit utility attempts to provide firewalling for the average Linux end user. Instead o ...
- Linux __setup解析【转】
本文转载自:http://blog.csdn.net/fdaopeng/article/details/7895037 __setup这条宏在Linux Kernel中使用最多的地方就是定义处理Ker ...
- Expression Blend实例中文教程系列
Expression Blend实例中文教程系列 本系列文章均转载:银光中国 时间:2010-04-09 09:20责任编辑:银光中国网 点击:次 Expression Blend实例中文教程系列由C ...
- bzoj 1504 郁闷的出纳员
题目大意: 有一些员工 他们有工资 当他们的工资低于一个值时 他们会永远离开 I命令 I_k 新建一个工资档案,初始工资为k. 如果某员工的初始工资低于工资下界,他将立 ...
- BZOJ_4566_[Haoi2016]找相同字符_后缀自动机
BZOJ_4566_[Haoi2016]找相同字符_后缀自动机 Description 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数.两个方案不同当且仅当这两 个子串中有 ...
- Java-Runoob-高级教程-实例-字符串:11. Java 实例 - 字符串性能比较测试
ylbtech-Java-Runoob-高级教程-实例-字符串:11. Java 实例 - 字符串性能比较测试 1.返回顶部 1. Java 实例 - 字符串性能比较测试 Java 实例 以下实例演 ...