gulp4 + wepack-stream 编译ES6为ES5(包括import引入编译)

1 篇文章 1 订阅
1 篇文章 0 订阅

es6编译为es5,包括import的引入方式解决方案

1、首先安装gulp 

cnpm install gulp -g // 全局安装,为了后面执行任务方便,也可省略,但是在执行任务时,需要进入到局部安装目录,建议安装
cnpm install gulp --save-dev // 安装在项目中,用于任务配置

2、准备安装babel(专门用于编译js的版本插件),以及gulp的babel插件

cnpm install babel-preset-env  babel-plugin-transform-remove-strict-mode gulp-babel@7
 gulp-babel --save-dev // 分别代表  babel编译模板  编译时移除全局严格模式  babel核心包(gulp4需要core7)  gulp的babel插件

【可选安装】

如果不安装,第3步需要一点小小的改动。

cnpm install gulp-load-plugins gulp-uglify --save-dev  // 对应代表  gulp插件一次性引入  js压缩

3、在gulpfile.js中编写编译任务

var config = {
        src: "src",
        style: "./style",
        dest: "dist"
    }, // 文件路径配置
    gulp = require('gulp'), // gulp 引入
    $ = require('gulp-load-plugins')(),    //这样的话 其他的模块可以直接使用 $ 符号来引入
    open = require('open');


// 编译js
gulp.task('script', () => {
    return gulp.src(config.src + '/*.js')
        .pipe($.babel({
            presets: ['env'] //编译模板,必须配置,否则不会编译成es5或其他的版本
        }))
        // .pipe($.uglify()) // 压缩
        .pipe(gulp.dest(config.dest + '/js'));
});

4、执行任务查看效果

进入到当前项目目录,执行gulp script,可以对比前后变化

编译前:

编译后:

添加了压缩后:

可以看到,import引入的js或json没有按照想法编译,require浏览器无法识别,需要进行编译为浏览器可识别的写法。

5、编译(import)为浏览器识别的代码 webpack-stream

  • 先安装必须包
cnpm install webpack-stream vinyl-named --save-dev  // 分别对应 gulp的webpack插件  不重命名js文件
  • 修改gulpfile.js
const config = {
        src: "src",
        page: "pages",
        style: "style",
        dest: "dist"
    }, // 文件路径配置
    gulp = require('gulp'), // gulp 引入
    $ = require('gulp-load-plugins')(),    //这样的话 其他的模块可以直接使用 $ 符号来引入
    open = require('open'),
    webpack = require('webpack-stream'),// 打包js的import
    named = require('vinyl-named'); // 打包时,不重命名js
    // webpackCongfig = require('./webpack.config.js'); 如果需要自行配置打包配置,新建一个webpack.config.js,配置方法和webpack一样


// 编译js
gulp.task('script', () => {
    return gulp.src(config.src + '/*.js')
        .pipe(named()) // 不改变js名字
         // 如果是自定义配置,则直接引入.pipe(webpack(webpackCongfig ))
         // 下面写法是默认,默认是打包之后进行压缩了,可支持引入js和json
         // 如果需要使用引入css或scss或less,则必须配置webpackCongfig 
        .pipe(webpack()) 
        // .pipe($.babel({
        //     presets: ['env'] //编译模板,必须配置,否则不会编译成es5或其他的版本
        // }))
        // .pipe($.uglify()) // 压缩
        .pipe($.plumber({errorHandler: errrHandler})) // 检查错误,
        // 防止出错的时候,奔溃
        .pipe(gulp.dest(config.dest + '/js'))
        .pipe($.connect.reload());
});
  • 查看效果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值