Giter Site home page Giter Site logo

gulp-book's Introduction

gulp 入门指南

gulp 是基于 node 实现 Web 前端自动化开发的工具,利用它能够极大的提高开发效率。

在 Web 前端开发工作中有很多“重复工作”,比如压缩CSS/JS文件。而这些工作都是有规律的。找到这些规律,并编写 gulp 配置代码,让 gulp 自动执行这些“重复工作”。

点击右上角的 Watch 订阅本书,点击 Star 收藏本书。

因为 Node 的全局包安装都是在C盘,所有请在C盘使用 gulp 以方便熟悉 gulp

相关教程:webpack-book

目录

将规律转换为 gulp 代码

现有目录结构如下:

└── js/
    └── a.js

规律

  1. 找到 js/目录下的所有 .js 文件
  2. 压缩这些 js 文件
  3. 将压缩后的代码另存在 dist/js/ 目录下

编写 gulp 代码

// 压缩 JavaScript 文件
gulp.task('script', function() {
    // 1. 找到
    return gulp.src('js/*.js')
    // 2. 压缩
        .pipe(uglify())
    // 3. 另存
        .pipe(gulp.dest('dist/js'));
});

代码执行结果

代码执行后文件结构

└── js/
│   └── a.js
└── dist/
    └── js/
        └── a.js

a.js 压缩前

function demo (msg) {
    alert('--------\r\n' + msg + '\r\n--------')
}

demo('Hi')

a.js 压缩后

function demo(n){alert("--------\r\n"+n+"\r\n--------")}demo("Hi");

此时 dist/js 目录下的 .js 文件都是压缩后的版本。

你还可以监控 js/ 目录下的 js 文件,当某个文件被修改时,自动压缩修改文件。启动 gulp 后就可以让它帮助你自动构建 Web 项目。


gulp 还可以做很多事,例如:

  1. 压缩CSS
  2. 压缩图片
  3. 编译Sass/LESS
  4. 编译CoffeeScript
  5. markdown 转换为 html

开始阅读:安装 Node 和 gulp

gulp-book's People

Contributors

findyourmagic avatar kasoqian avatar nimoc-copilot avatar testmugen avatar traingithub avatar yqrashawn avatar zzzjh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gulp-book's Issues

说明哪些模块被 qiang (和谐)

wangsai

gulp-sass 依赖 node-sass,而node-sass的sass解析模块是c语言写的,也就是需要编译后的二进制模块,node-sass是通过判断当前os环境自己从github上下载的二进制模块,所以遇到网络不好或被墙的话就必然失败
npm 模块 sqlite3也是同样问题,sqlite的二进制模块放在 amzon 上了,偏偏被qiang了,死活下载不了

只要告诉大家被墙了哪些东西就行。自行fanqiang吧

使用 gulp 开发一个项目 章节完成后将说明哪些模块被 qiang 了,提醒读者使用代理。(可在readme.md就增加提示)

安装gulp 记得提示用户 sudo

哥们你的文章在Google排行权重很高,相信很多人看,其中会有小白,可能没有 sudo 安装失败,对小白造成困扰哦。

怎样取消邮件提醒?

我已经点了“unsubscribe”为什么还会经常收到邮件?怎样取消邮件提醒呢?工作太忙了没时间关注这个了;

使用 gulp 实现兼容 seajs 和 requirejs 的打包工具

基本思路:

gulp.src('src/js/page/a.js')
       .pipe(build())
       .pipe(gulp.dest())
// src/js/page/a.js
seajs.use(['jquery',
    'arale/tip/1.2.2/tip',
    'rain/daterange/0.0.1/daterange',
    'gallery/webuploader/0.1.5/webuploader',
    'arale/validator/0.9.7/validator',
    'arale/dialog/1.3.0/dialog'
    ],
    function (a,b,c,d) {
// .. code  ... 
})

---- 以上代码会编译成 ------

// dist/js/page/a.js
(function(){
defined('jquery/1.0.1/jquery')....
defined('arale/tip/1.2.2/tip')....
defined('arale/dialog/1.3.0/dialog')...
// ... code ...

})()

参考的 spm3 实时开发方式

补全 gulp-watch-path 的参数

为了获取更准确的 distPath

var paths = watchPath(event, 'src/', 'dist/')
// 改为
var paths = watchPath(event, 'src/sass/', 'dist/css/')

订阅本书

邮件订阅

点击此处邮件订阅

Github 订阅

点击本页面右上角的 Watch 在弹出框中点击 Watching 订阅本博客,这样本书的所有更新和讨论都会在github首页出现。
image

收藏

点击 Star 收藏本书,以便在 stars 中找到本博客。

图片压缩报错

我运行你的代码出现下面的错误 请问这个是什么原因
qq 20170111142255

这个错误有人知道是怎么回事吗?

root@rdcnBuild016:/home/share/web_src# gulp
[15:00:31] Using gulpfile /home/share/web_src/gulpfile.js
[15:00:31] Starting 'js'...
[15:00:31] Finished 'js' after 14 ms
[15:00:31] Starting 'jsCopy'...
[15:00:31] Finished 'jsCopy' after 2.33 ms
[15:00:31] Starting 'html'...
[15:00:31] Finished 'html' after 5.07 ms
[15:00:31] Starting 'css'...
[15:00:31] Finished 'css' after 1.24 ms
[15:00:31] Starting 'image'...
[15:00:31] Finished 'image' after 2.28 ms
[15:00:31] Starting 'copy'...
[15:00:31] Finished 'copy' after 525 μs
[15:00:31] Starting 'icon'...
[15:00:31] Finished 'icon' after 1.05 ms
[15:00:31] Starting 'default'...
[15:00:31] Finished 'default' after 2.02 μs

events.js:160
throw er; // Unhandled 'error' event
^
Error: gifsicle: unrecognized option ‘--no-app-extensions’
Usage: gifsicle [OPTION | FILE | FRAME]...
Try 'gifsicle --help' for more information.

at Promise.all.then.arr (/home/share/web_src/node_modules/[email protected]@execa/index.js:231:11)
at process._tickCallback (internal/process/next_tick.js:109:7)

root@rdcnBuild016:/home/share/web_src#

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.