gulp入门与一些基本设置
这里是gulp入门的一些操作,实现了编译sass文件、压缩、合并、添加版本号等基本功能。
友情提示,如果npm出现无法下载可以安装 cnpm。在安装完Nodejs 后
- npm install cnpm -g --registry=https://registry.npm.taobao.org
完成后可
- cnpm -v
查看安装结果
1.安装Nodejs
2.安装全局gulp
- npm install --global gulp-cli
3.进入项目目录(之后的操作全是在此目录下进行)
- cd desktop/myprogram
4.初始化package.json
- npm init
5.安装项目gulp
- npm install --save-dev gulp
6.安装插件
- npm install gulp-htmlmin gulp-imagemin imagemin-pngcrush gulp-jshint jshint gulp-uglify gulp-notify gulp-useref gulp-load-plugins gulp-clean-css gulp-sass gulp-if gulp-users gulp-rev gulp-rev-collector —save-dev
7.新建gulpfile.js
- var gulp = require('gulp');
- gulp.task('default', function() {
- // place code for your default task here
- });
8.测试
在终端输入命令
- gulp
9.附上index.html(压缩css、js部分) 、package.json 和 gulpfile.js
index.html
- <link rel="shortcut icon" href="images/favicon.ico">
- <!-- build:css lib/main.css -->
- <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
- <link rel="stylesheet" type="text/css" href="css/main.css">
- <link rel="stylesheet" type="text/css" href="css/common.css">
- <!-- endbuild -->
- <!-- build:js lib/main.js -->
- <script type="text/javascript" src="js/jquery.min.js"></script>
- <script type="text/javascript" src="js/bootstrap.min.js"></script>
- <script type="text/javascript" src="js/route.js"></script>
- <script type="text/javascript" src="js/main.js"></script>
- <!-- endbuild -->
package.json
- "devDependencies": {
- "del": "^2.2.0",
- "gulp": "^3.9.1",
- "gulp-clean-css": "^2.0.8",
- "gulp-concat": "^2.6.0",
- "gulp-htmlmin": "^2.0.0",
- "gulp-if": "^2.0.1",
- "gulp-imagemin": "^3.0.1",
- "gulp-jshint": "^2.0.1",
- "gulp-load-plugins": "^1.2.4",
- "gulp-notify": "^2.2.0",
- "gulp-rev": "^7.0.0",
- "gulp-rev-collector": "^1.0.3",
- "gulp-sass": "^2.3.1",
- "gulp-sequence": "^0.4.5",
- "gulp-uglify": "^1.5.3",
- "gulp-useref": "^3.1.0",
- "imagemin-pngcrush": "^5.0.0",
- "jshint": "^2.9.2"
- }
gulpfile.js
- 'use strict';
- var gulp = require('gulp'),
- $ = require("gulp-load-plugins")(),
- sass = require("gulp-sass"),
- rev = require("gulp-rev"),
- del = require('del');
- gulp.task('default', function() {
- gulp.run('styles', 'jshint');
- gulp.watch('src/styles/*.scss', ['styles']);
- });
- gulp.task('build', $.sequence('cpfiles', 'useref', 'cphtml', 'revfile',
- 'revhtml', 'delfiles', 'img','htmlmin'));
- gulp.task('htmlmin', function() {
- return gulp.src(['dist/*/*.html', 'dist/*.html'])
- .pipe($.htmlmin({collapseWhitespace: true}))
- .pipe(gulp.dest('dist/'))
- .pipe($.notify({ message: 'htmlmin task done' }));
- });
- gulp.task('delfiles', function(){
- del([
- 'dist/js',
- 'dist/css',
- 'dist/styles',
- 'dist/lib/index.html',
- 'dist/lib/rev-manifest.json'
- ]);
- })
- gulp.task('revhtml', function () {
- return gulp.src(['dist/lib/rev-manifest.json', 'dist/lib/index.html'])
- .pipe($.revCollector())
- .pipe(gulp.dest('dist/'))
- .pipe($.notify({ message: 'revhtml task done' }));
- });
- gulp.task('revfile', function(){
- return gulp.src(['dist/lib/*.css', 'dist/lib/*.js'])
- .pipe($.rev())
- .pipe(gulp.dest('dist/lib/'))
- .pipe(rev.manifest({
- path: 'rev-manifest.json',
- merge: true
- }))
- .pipe(gulp.dest("dist/lib/"))
- .pipe($.notify({ message: 'revfile task done' }));
- });
- gulp.task('cphtml', function(){
- return gulp.src('dist/*.html')
- .pipe(gulp.dest('dist/lib/'))
- .pipe($.notify({ message: 'copyhtml task done' }));
- })
- gulp.task('useref', function() {
- return gulp.src('dist/*.html')
- .pipe($.useref())
- .pipe($.if('*.js', $.uglify()))
- .pipe($.if('*.css', $.cleanCss({compatibility: 'ie8'})))
- .pipe(gulp.dest('dist/'))
- .pipe($.notify({ message: 'useref task done' }));
- });
- gulp.task('cpfiles', ['styles'], function(){
- return gulp.src(['src/*/*','src/*'])
- .pipe(gulp.dest('dist/'))
- .pipe($.notify({ message: 'copyfiles task done' }));
- })
- gulp.task('img', function() {
- return gulp.src('dist/images/*.*')
- .pipe($.imagemin({
- progressive: true,
- svgoPlugins: [{removeViewBox: false}],
- use: [$.imagemin()]
- }))
- .pipe(gulp.dest('dist/images/'))
- .pipe($.notify({ message: 'img task done' }));
- });
- gulp.task('styles', function(){
- return gulp.src('src/styles/*.scss')
- .pipe(sass().on('error', sass.logError))
- .pipe(gulp.dest('src/css'))
- .pipe($.notify({ message: 'sass task done' }));
- })
- gulp.task('jshint', function() {
- return gulp.src(['src/js/main.js','src/js/route.js'])
- .pipe($.jshint())
- .pipe($.jshint.reporter('default'))
- .pipe($.notify({ message: 'jshint task done' }));
- });
- gulp.task('clean', function(){
- del([
- 'dist/'
- ]);
- })
文件结构,上层为 desktop/myprogram/
gulp入门与一些基本设置的更多相关文章
- Gulp入门教程(转载)
本人转载自: Gulp入门教程
- (转)前端构建工具gulp入门教程
前端构建工具gulp入门教程 老婆婆 1.8k 2013年12月30日 发布 推荐 10 推荐 收藏 83 收藏,20k 浏览 本文假设你之前没有用过任何任务脚本(task runner)和命令行工具 ...
- 《Gulp 入门指南》 : 使用 gulp 压缩 JS
<Gulp 入门指南> : 使用 gulp 压缩 JS 请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 访问论坛获取帮助 压缩 js 代码可降低 js 文件大小,提高页面打 ...
- Gulp入门与解惑
Gulp简介 Gulp.js 是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务.Gulp.js是基于 Node.js构建的,利用Node.js流的威力,你可以快速构建项目. 安装 ...
- gulp 入门使用
gulp 入门使用 使用场景 相信大家在传统的开发模式下 都是 html + css + js 然后静态文件不经过任何处理 部署到服务器,这样会有很多漏洞例如: 1.在网站上查看F12 就可以看到 ...
- 【转】Gulp入门基础教程
Gulp入门基础教程 原文在此 前言最近流行前端构建工具,苦于之前使用Grunt,代码很难阅读,现在出了Gulp, 真是摆脱了痛苦.发现了一篇很好的Gulp英文教程,整理翻译给大家看看. 为什么使用G ...
- gulp入门演练
一直想学习下gulp看了蛮多资料,然后总是感觉是是而非,突然开窍了,把自己学会的过程给大家分享下,入门超级简单的 gulp安装 安装gulp 如果参数-g 表示全局安装 $ npm install g ...
- 前端小白的gulp入门
gulp新手入门 全局安装 cnpm install -g gulp 本地安装cnpm install gulp -D 如果项目没有package.json,记得npm init 安装插件cnpm i ...
- gulp入门学习教程(入门学习记录)
前言 最近在通过教学视频学习angularjs,其中有gulp的教学部分,对其的介绍为可以对文件进行合并,压缩,格式化,监听,测试,检查等操作时,看到前三种功能我的心理思想是,网上有很多在线压缩,在线 ...
随机推荐
- 修改终端下vim的PopupMenu选种项的背景颜色
我平常比较喜欢使用终端下的 VIM,最方便的就是随时可以使用ctrl+z切换到终端下执行命令, 然后再通过fg切换回 VIM.如果再有个透明效果,那就更赞了.不过最近换了一个配色ron 后, 有个比较 ...
- 【VUE+laravel5.4】vue给http请求 添加请求头数据
1.适用于 ajax和普通的http请求 2.vue添加用法如下: <script type="text/javascript src="/dist/js/app.min.j ...
- A brief introduction to Hashing and Rehashing
偶然发现一篇哈希的综述文章,虽然是1996年写的,里面的一些评测在今天看来早已经小case了.但是今天仍然极具参考价值. 地址:http://www.drdobbs.com/database/hash ...
- iOS - UIPasteboard
前言 NS_CLASS_AVAILABLE_IOS(3_0) __TVOS_PROHIBITED __WATCHOS_PROHIBITED @interface UIPasteboard : NSOb ...
- 【js】sort()
//为了实现排序,sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串, //以确定如何排序.即使数组中的每一项都是数值,sort()方法比较的也是字符串, var v ...
- redhat 6.4 安装VirtualBox自动增强功能功:unable to find the sources of your current Linux kernel
redhat 6.4 安装VirtualBox自动增强功能功能的时候提示: building the main Guest Additions module FAILED unable to find ...
- pimpl idiom
pimpl idiom flyfish 2014-9-30 pimpl是Pointer to implementation的缩写 为什么要使用pimpl 1最小化编译依赖 2接口与实现分离 3可移植 ...
- Python center() 方法
描述 center() 方法返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格. 语法 center() 方法语法: S.center(width[,fillch ...
- Linux 批量建立信任关系,实现ssh无password登陆的脚本
作用: 把当前机器的ssh公钥拷贝到其它机器.以实现从当前机器能够ssh无password登陆到其它机器 用法: 1)把要加入的ip地址写入到一个文件里.比方host 2)把脚本保存为sh文件,如 i ...
- STM32F103 AFIO时钟疑问
在stm32F103系列中:AFIO是重映射辅助时钟,如果仅仅是使用第二功能(如uart,spi,),不需要打开,使用第二功能打开GPIO和第二功能时钟.我反复测试是这样的 AFIO时钟由RCC_AP ...