【转】使用gulp 进行ES6开发

原谅地址:https://segmentfault.com/a/1190000004394726

一说起ES6,总会顺带看到webpack、babel、browserify还有一些认都不认识的blabla名词,对于gulp才会一点点的我来说,内心简直是崩溃的,上网查了一些文章,探索着用gulp搭起一个ES6的开发模式,总之先一边学ES6一边写吧。。然后再让这个流程更加。。高级。

开始

ES6有很多新特性让人忍不住想去尝试,然而各种浏览器的支持程度还不足以让我们直接在浏览器上执行ES6的代码,好在babel可以帮助我们将ES6代码转码成ES5,再利用bowserify的帮助,我们就可以尽情体验ES6带来的愉悦了。P.S. 构建工具使用的是gulp。

目的

制定一个流程之前还是先得想好我们想让这个流程是一个什么样子。

首先,开发代码和部署代码是分开的,比如我们在/app目录下开发,然后通过gulp构建之后,代码将存放在 /dist 目录下。也就是说打开 /dist 目录下的文件,是可以直接在浏览器上运行的。

那么我们可以约定这个流程如下:

1. 开发

在app目录下开发,这时 /js 目录下是ES6的代码。

/app
-- /js
---- app.js
---- util.js
-- /css
---- base.css
---- app.css
/dist
-- /js
-- /css
-- index.html
gulpfile.js
package.json

2. 构建

使用gulp将js转码成ES5并压缩,将css合并并压缩。

/app
-- /js
---- app.js
---- util.js
-- /css
---- base.css
---- app.css
/dist
-- /js
---- app.js // 已经转码成了ES5
---- util.js // 已经转码成了ES5
-- /css
---- all.min.css // base.css + app.css 合并、压缩并重命名的文件
-- index.html
gulpfile.js
package.json

3. 使用 bowserify

如果我们使用了ES6中的 module,通过 importexport 进行模块化开发,那么通过babel转码后, import 、 export 将被转码成符合CMD规范的 require 和 exports 等,但是浏览器还是不认识,这时可以使用 bowserify 对代码再次进行构建。产生文件为bundle.js

/app
-- /js
---- app.js
---- util.js
-- /css
---- base.css
---- app.css
/dist
-- /js
---- app.js // 已经转码成了ES5
---- util.js // 已经转码成了ES5
---- bundle.js // 实际引用的js文件
-- /css
---- all.min.css // base.css + app.css 合并、压缩并重命名的文件
-- index.html
gulpfile.js
package.json

所以一开始 index.html 中引用的js文件和css文件就是 bundle.js 和 all.min.css

确定好流程后,就开始搭建开发环境吧。

一、新建项目

项目结构如下:

/app
-- /js
-- /css
/dist
-- /js
-- /css
-- index.html
gulpfile.js

我们的代码在 /app 目录下开发,转码、合并、压缩完之后保存在 /dist 下。

二、配置环境

1) 初始化 npm

首先进入根目录,初始化项目

$ npm init

2) 安装 gulp

$ npm install gulp --save-dev

3) 安装 gulp-babel

Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。

命令:

npm install --save-dev gulp-babel babel-preset-es2015

其中babel -preset-es2015 是ES2015转码规则,如果代码中含有es7的内容,可以继续安装ES7不同阶段语法提案的转码规则

(摘自阮一峰老师的ECMAScript 6入门)

# ES2015转码规则
$ npm install --save-dev babel-preset-es2015

# react转码规则
$ npm install --save-dev babel-preset-react

# ES7不同阶段语法提案的转码规则(共有4个阶段),选装一个
$ npm install --save-dev babel-preset-stage-0
$ npm install --save-dev babel-preset-stage-1
$ npm install --save-dev babel-preset-stage-2
$ npm install --save-dev babel-preset-stage-3

4) 安装其他gulp工具

以下是根据流程所需要安装的全部工具

$ npm install gulp-rename gulp-concat gulp-uglify gulp-cssnano browserify vinyl-source-stream --save-dev
  • gulp-rename 重命名文件
  • gulp-concat 合并文件
  • gulp-uglify 压缩js文件
  • gulp-cssnano 压缩css文件
  • browserify 让你使用类似于 node 的 require() 的方式来组织浏览器端的 Javascript 代码
  • vinyl-source-stream 将Browserify的bundle()的输出转换为Gulp可用的vinyl(一种虚拟文件格式)流

至此环境已经搭建好了。接下来我们需要配置gulp,让我们的工作更有效率。

三、配置 gulp

打开 gulpfile.js,编辑代码如下

const gulp = require(‘gulp‘);
const babel = require(‘gulp-babel‘);
const uglify = require(‘gulp-uglify‘);
const rename = require(‘gulp-rename‘);
const cssnano = require(‘gulp-cssnano‘);
const concat = require(‘gulp-concat‘);
const browserify = require(‘browserify‘);
const source = require(‘vinyl-source-stream‘);

// 编译并压缩js
gulp.task(‘convertJS‘, function(){
  return gulp.src(‘app/js/*.js‘)
    .pipe(babel({
      presets: [‘es2015‘]
    }))
    .pipe(uglify())
    .pipe(gulp.dest(‘dist/js‘))
})

// 合并并压缩css
gulp.task(‘convertCSS‘, function(){
  return gulp.src(‘app/css/*.css‘)
    .pipe(concat(‘app.css‘))
    .pipe(cssnano())
    .pipe(rename(function(path){
      path.basename += ‘.min‘;
    }))
    .pipe(gulp.dest(‘dist/css‘));
})

// 监视文件变化,自动执行任务
gulp.task(‘watch‘, function(){
  gulp.watch(‘app/css/*.css‘, [‘convertCSS‘]);
  gulp.watch(‘app/js/*.js‘, [‘convertJS‘, ‘browserify‘]);
})

// browserify
gulp.task("browserify", function () {
    var b = browserify({
        entries: "dist/js/app.js"
    });

    return b.bundle()
        .pipe(source("bundle.js"))
        .pipe(gulp.dest("dist/js"));
});

gulp.task(‘start‘, [‘convertJS‘, ‘convertCSS‘, ‘browserify‘, ‘watch‘]);

通过 watch,我们可以在保存完代码之后,让gulp自动帮我们将代码构建一遍,而不用自己再敲一遍命令。

开始 gulp

$ gulp start

现在就开始ES6开发之旅吧

时间: 2024-10-12 16:33:14

【转】使用gulp 进行ES6开发的相关文章

简单利用gulp搭建es6自动化

es6是什么?借着这个话题,我想说:身为web前端的工作者连es6没听说,转行吧. demo的代码如下: 源码下载 或者 gitclone地址: [email protected]:sisheb/gulpdemo.git 1.gulp用到开发plugins如下: "devDependencies": { "babel-preset-es2015": "^6.24.1", "gulp": "^3.9.1",

sublime +react+es6开发环境

Babel Sublime3才有的插件,支持ES6.JSX语法高亮. 菜单->View->Syntax->Open all with current extension as...->Babel->JavaScript(Babel) 高亮了有木有.   Babel Babel-Sublime插件很好的支持了JSX语法的高亮显示,连包裹在组件中的HTML标签都能实现高亮显示,具体的插件安装以及设置方法就不多说了,自行看GitHub上的介绍吧,很简单. //支持的代码片段如下 c

webpack+react+redux+es6开发模式

一.预备知识 node, npm, react, redux, es6, webpack 二.学习资源 ECMAScript 6入门 React和Redux的连接react-redux Redux 入门教程   redux middleware 详解   Redux研究 React 入门实例教程 webpack学习demo NPM 使用介绍 三.工程搭建 之前有写过 webpack+react+es6开发模式 ,文章里介绍了一些简单的配置,欢迎访问. 1.可以npm init, 创建一个新的工程

Electron + React + Node.js + ES6 开发本地 App

Electron + React + Node.js + ES6 开发本地 App 1.概述 近来工作上需要做一款 PC 上的软件,这款软件大体来讲是类似 PPT 的一款课件制作软件.由于我最近几年专注于移动 App 的开发,对 PC 端开发的了解有些滞后.所以我首先需要看看,在 PC 上采用什么框架能够顺利完成我的工作. 我的目标是,在完成这款软件的同时能够顺便学习一下比较流行的技术.在经过前期技术调研后,我明确了实现这款软件所需要的技术条件: 不采用 C++ 方面的类库,比如 MFC.Qt.

使用gulp搭建es6运行环境

es6引入很多新的语法特性,但是想要在现有浏览器环境执行,需要将ES6代码转为ES5代码,网上有很多转码器babel,traceur之类的,参考之后,使用traceur和gulp搭建es6运行环境,开始我的es6. 开始安装 首先确保电脑上安装了nodejs.1.创建一个项目目录2.全局安装Traceur,在控制台输入npm install -g traceur3.打开项目目录,安装gulp以及gulp-traceur插件npm install -g gulpnpm install gulp g

ES6+ 开发电商网站的账号体系 JS SDK

详情请咨询  QQ  709639943 01.ES6+ 开发电商网站的账号体系 JS SDK 02.Python3 全网最热的Python3入门+进阶 比自学更快上手实际开发 03.Python3.6 强力Django+杀手级Xadmin打造上线标准的在线教育平台 04.python_进阶强化 05.Java秒杀系统方案优化 高性能高并发实战 06.企业级刚需Nginx入门,全面掌握Nginx配置+快速搭建高可用架构 07.快速上手Linux 玩转典型应用 08.全面系统讲解CSS 工作应用+

第一节:es6开发环境的搭建

第一章:es6开发环境的搭建 命令:npm init -y   生成package.json文件(依赖文件):项目结构如下: 全局安装 babel-cli  命令如下:npm install -g babel-cli, 还需本地安装babel-preset-es2015 和 babel-cli 然后在项目当中安装:npm install --save-dev babel-preset-es2015 babel-cli 将es6打包转化es5能识别的代码: babel src/index.js -

使用 webpack + react + redux + es6 开发组件化前端项目

因为最近在工作中尝试了 webpack.react.redux.es6 技术栈,所以总结出了一套 boilerplate,以便下次做项目时可以快速开始,并进行持续优化. 项目结构规划 每个模块相关的 css.img.js 文件都放在一起,比较直观,删除模块时也会方便许多.测试文件也同样放在一起,哪些模块有没有写测试,哪些测试应该一起随模块删除,一目了然. build |-- webpack.config.js # 公共配置 |-- webpack.dev.js # 开发配置 |-- webpac

gulp 编译es6 react 教程 案例 配置

1.gulp基本配置: var gulp = require('gulp'), watch = require('gulp-watch'), babel = require('gulp-babel'); var browserify = require('gulp-browserify'); var SourceMap = require('gulp-sourcemaps'); var SourceMapSupport = require('gulp-sourcemaps-support');