`

使用babel编译es6

 
阅读更多

 

一.直接使用命令编译

 

node命令:

 

$ sudo npm install babel -g          #全局安装
$ babel demo.js -o demo-compile.js   #编译并产出

 

 

二.结合gulp编译

1.需要先安装gulp,gulp-babel

 

$ npm install --save-dev gulp-babel

 2.然后新建gulpfile.js

 

var gulp = require("gulp");
var babel = require("gulp-babel");

gulp.task("default", function () {
  return gulp.src("src/app.js")
    .pipe(babel())
    .pipe(gulp.dest("dist"));
});

    // Use gulp-sourcemaps like this:

 

var gulp = require("gulp");
var sourcemaps = require("gulp-sourcemaps");
var babel = require("gulp-babel");
var concat = require("gulp-concat");

gulp.task("default", function () {
  return gulp.src("src/**/*.js")
    .pipe(sourcemaps.init())
    .pipe(babel())
    .pipe(concat("all.js"))
    .pipe(sourcemaps.write("."))
    .pipe(gulp.dest("dist"));
});

 以下模块选装

 

 

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

3.在根目录新建.babelrc文件,命令如下:

 

echo '{ "presets": ["es2015"] }' > .babelrc

 

 

三,结合webpack使用

1.安装loader模块

 

$ npm install --save-dev babel-loader babel-core

2.在根目录新建webpack.config.js文件

 

var webpack = require('webpack');  
var commonsPlugin = new webpack.optimize.CommonsChunkPlugin('common.js');  
   
module.exports = {  
    //插件项  
    plugins: [commonsPlugin],  
    //页面入口文件配置  
    entry: {  
        index : './src/js/page/index.js'  
	},  
	//入口文件输出配置  
	output: {  
	    path: 'dist/js/page',  
	    filename: '[name].js'  
	},  
	module: {  
	    //加载器配置  
	        loaders: [
	            //.css 文件使用 style-loader 和 css-loader 来处理
	            { test: /\.css$/, loader: 'style-loader!css-loader' },
	            //.js 文件使用 jsx-loader 来编译处理
	            { test: /\.js$/, loader: 'jsx-loader?harmony!babel-loader' },
	            //.scss 文件使用 style-loader、css-loader 和 sass-loader 来编译处理
	            { test: /\.scss$/, loader: 'style!css!sass?sourceMap'},
	            //图片文件使用 url-loader 来处理,小于8kb的直接转为base64
	            { test: /\.(png|jpg)$/, loader: 'url-loader?limit=8192'}
	        ]
	},  
	//其它解决方案配置  
	resolve: {  
	    //查找module的话从这里开始查找  
	        root: 'E:/github/flux-example/src', //绝对路径
	        //自动扩展文件后缀名,意味着我们require模块可以省略不写后缀名
	        extensions: ['', '.js', '.json', '.scss'],
	        //模块别名定义,方便后续直接引用别名,无须多写长长的地址
	        alias: {
	            AppStore : 'js/stores/AppStores.js',//后续直接 require('AppStore') 即可
	            ActionType : 'js/actions/ActionType.js',
	            AppAction : 'js/actions/AppAction.js'
	        }
    }
}  

 如上,"-loader"其实是可以省略不写的,多个loader之间用“!”连接起来。

注意所有的加载器都需要通过 npm 来加载,并建议查阅它们对应的 readme 来看看如何使用。

拿最后一个 url-loader 来说,它会将样式中引用到的图片转为模块来处理,使用该加载器需要先进行安装:

npm install url-loader -save-dev

配置信息的参数“?limit=8192”表示将所有小于8kb的图片都转为base64形式(其实应该说超过8kb的才使用 url-loader 来映射到文件,否则转为data url形式)。

 

 

webpack 的执行也很简单,直接执行

$ webpack --display-error-details

即可,后面的参数“--display-error-details”是推荐加上的,方便出错时能查阅更详尽的信息(比如 webpack 寻找模块的过程),从而更好定位到问题。

其他主要的参数有:

 

$ webpack --config XXX.js   //使用另一份配置文件(比如webpack.config2.js)来打包
 
$ webpack --watch   //监听变动并自动打包
 
$ webpack -p    //压缩混淆脚本,这个非常非常重要!
 
$ webpack -d    //生成map映射文件,告知哪些模块被最终打包到哪里了

 

 

其中的 -p 是很重要的参数,曾经一个未压缩的 700kb 的文件,压缩后直接降到 180kb(主要是样式这块一句就独占一行脚本,导致未压缩脚本变得很大)。

 

 

 

分享到:
评论

相关推荐

    详解如何使用babel进行es6文件的编译

    使用 Babel 进行 ES6 文件编译详解 Babel 是一个流行的 JavaScript 编译器,可以将 ES6 语法编译成 ES5 语法,以便在老版本浏览器中运行。在本文中,我们将详细介绍如何使用 Babel 进行 ES6 文件编译,并对编译过程...

    使用babel进行es6转es5的源代码

    开发者在这里使用ES6+语法编写代码,然后通过Babel转换成ES5代码,放置在其他目录(如`dist`),以便在目标环境中运行。 **.idea**目录 这个目录通常是IDE(如WebStorm)的项目配置文件,包含了项目的结构和设置...

    使用 babel.min.js让es6的语法全部编译成es5的

    "使用 babel.min.js 让 ES6 的语法全部编译成 ES5 的" 这个标题指出了一个关键的 JavaScript 开发实践,即如何通过 Babel 这个工具将现代的 ES6(ECMAScript 2015)语法转换为广泛支持的 ES5 语法,以确保代码在...

    详解设置Webstorm 利用babel将ES6自动转码成ES5

    在这篇文章中,我们将学习如何在Webstorm中使用babel将ES6代码自动转换为ES5代码,以便在浏览器中使用最新的JavaScript特性。 首先,需要了解的是ECMAScript 6(简称ES6)是JavaScript语言的下一代标准,已经在2015...

    利用babel将es6语法转es5的简单示例

    本文将向你展示如何使用Babel将ES6代码转换为ES5代码,以便在各种环境中流畅运行。 **文件目录结构** 在开始之前,确保你已经安装了Node.js和npm(Node包管理器)。如果你尚未安装,可以访问官方网站进行下载和...

    详解webpack 配合babel 将es6转成es5 超简单实例

    "使用Webpack和Babel将ES6转换为ES5的超简单实例" 以下是从给定文件中生成的相关知识点: 1. Webpack是什么? Webpack是一个现代的JavaScript模块打包器(bundler),它可以将许多小模块组织成一个文件,以便...

    使用webpack编译es6代码的方法步骤

    因此,使用Webpack来编译ES6代码,将其转换成能在更多浏览器上运行的代码,是非常普遍的实践。 要使用Webpack编译ES6代码,首先需要安装Node.js和npm(Node.js的包管理工具)。接着,我们可以使用npm来安装Webpack...

    next-workflow:使用 Babel 处理 ES6 或 ES7 的简单工作流程

    一个为快速开发打造的javascript工作环境,采用babel编译代码,让你可以用ES6甚至ES7写代码 fork项目,基于这个模板编写你的javascript应用或者Node模块 ##目录介绍 lib/ src/ test/ 先从src说起,你的项目代码都写在src...

    babel-plugin-transform-custom-element-classes, 编译 ES6 HTMLElement类扩展到 ES5.zip

    babel-plugin-transform-custom-element-classes, 编译 ES6 HTMLElement类扩展到 ES5 babel-plugin-transform-custom-element-classes编译扩展了ES5环境的HTMLElement的自定义元素类。问题自定义元素是针对原生ES6类...

    babel-es6-webpack-starter-kit

    Babel 是一个广泛使用的 JavaScript 编译器,它的主要功能是将最新的 ECMAScript 版本(如 ES6、ES7 及更高版本)的代码转换为向后兼容的 JavaScript 代码,使得这些新特性可以在当前不支持它们的浏览器或环境中运行...

    一个支持编译sass编译ES6压缩静态资源自动添加浏览器前缀实时编译的用于传统MVC项目的gulp工作流

    “编译ES6”意味着使用gulp来转换ES6(ECMAScript 6)语法到ES5。ES6引入了许多新的特性和语法糖,如箭头函数、模板字符串、类等,但并非所有浏览器都支持。借助babel,一个流行的JavaScript转译器,我们可以将ES6...

    前端开源库-fis-parser-es6-babel

    而`fis-parser-es6-babel` 插件则是在FIS中集成Babel的能力,帮助开发者将ES6代码编译为ES5,以实现跨浏览器的兼容性。 Babel是一个非常流行的JavaScript转换工具,它能将ES6+的代码转化为向后兼容的JavaScript语法...

    cookiecutter-babel:使用Babel的ES6的最小cookiecutter模板

    $ cookiecutter gh:Raynes/cookiecutter-babel $ cd aegaeon # replace with your actual project name $ npm install $ gulp # builds ES6 source code in src/ 那里还有一个小任务,可以在后台观看src/并自动编译...

    babel+babel-polyfill兼容IE,ES6转ES5

    标题中的"babel+babel-polyfill兼容IE,ES6转ES5"指的就是利用Babel转换ES6代码,并通过使用`babel-polyfill`库来实现对旧版浏览器的兼容。 **Babel** 是一个广泛使用的JavaScript转换器,它可以将最新的JavaScript...

    ex_gulp4:Gulp 4教程练习文件

    Gulp 4教程练习文件 :Concat CSS文件生成CSS文件的SourceMap自动添加CSS供应商前缀缩小CSS文件Concat JavaScript文件生成JavaScript文件的SourceMap缩小JavaScript文件缩小图片编译SCSS文件使用Babel编译ES6制作...

    详解用Webpack与Babel配置ES6开发环境

    运行编译打包命令,会发现 Webpack 默认并不转换 ES6 语法,因为它仅支持 ES6 模块的加载,而需要 Babel 来处理 ES6 及以上的语言特性。 因此,接下来我们要安装 Babel。Babel 是一个广泛使用的 JavaScript 编译器...

    js代码-Babel实现ES6 Class继承

    本文将深入探讨如何使用Babel来实现ES6的`Class`继承,并解释相关知识点。 首先,我们需要理解ES6的`Class`关键字。`Class`实际上是函数的语法糖,它提供了更友好的面向对象编程方式。例如: ```javascript class ...

    aurelia-skeleton-navigation-ts:一个使用aurelia骨骼导航项目将babel和ES6换成TSC和Typescript的简单示例

    这几乎是原始骨架应用程序的副本,但在大多数地方都使用了打字稿和tsc,而不是babel和ES6 js。 在打字稿编译步骤中存在一个已知问题,即它不了解system目标,这仅在TS的主发行版中而不是在公共发行版中,因此在构建...

Global site tag (gtag.js) - Google Analytics