• 使用gulp 进行ES6开发


    使用gulp 进行ES6开发

    一、新建项目

    项目结构如下:

    /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
  • 相关阅读:
    算法漫游指北(第六篇)双端队列、排序算法分类、排序算法的稳定性、排序算法复杂度
    横冲直撞vue(第七篇):vue生命周期、vue组件
    还能这么玩?用VsCode画类图、流程图、时序图、状态图...不要太爽!
    带你学够浪:Go语言基础系列
    带你学够浪:Go语言基础系列
    带你学够浪:Go语言基础系列
    带你学够浪:Go语言基础系列-环境配置和 Hello world
    带你学够浪:Go语言基础系列
    最香远程开发解决方案!手把手教你配置VS Code远程开发工具,工作效率提升N倍
    面试总结:鹅厂Linux后台开发面试笔试C++知识点参考笔记
  • 原文地址:https://www.cnblogs.com/clj2017/p/9322425.html
Copyright © 2020-2023  润新知