webpack如何编译ES6打包

前言:随着ES的普及我们越来越多的开始使用ES6的语法了,当然也随着mvvm框架的流行少不了js模块化,那js模块化又有那些呢

在很早的时候大家都用的命名空间,现在也有人用(库名.类别名.方法名)

后来出现了CommonJS、AMD、CMD、UMD,现在流行ES 6 module

CommonJS的基本介绍:

一个文件为一个模板,通过module.exports暴露模块接口,通过require引入模块,同步执行

规范:http://wiki.commonjs.org/wiki/Modules/1.1.1

AMD的基本介绍:

全称:Async Module Definition,使用define定义模块,使用require加载模块,常用库RequireJS,依赖前置、提前执行

规范:https://github.com/amdjs/amdjs-api/wiki/AMD

CMD的基本介绍:

全称:Common Module Definition,一个文件做为一个模块,使用define来定义一个模块、使用require来加载一个模块,代表作SeaJS,尽可能地懒执行

规范:https://github.com/cmdjs/specification/blob/master/draft/module.md

UMD的基本介绍:

全称:Universal Module Definition

叫做通用解决方案,基本三个步骤:判断是否支持AMD、是否支持CommonJS、如果都没有使用全局变量

ES6 M 基本介绍:

全称:EcmaScript Module

一个文件一个模块,export/import

那Webpack支持哪些打包呢?

AMD(RequireJS),ES Modules(推荐的),CommonJS,常用的就是后两种

-----------------------下面开始-------------------------------

环境准备:node npm webpack

第一步安装webpack:cmd里执行   npm install webpack -g

我的现在装的是最新版4.31版本

如果版本低的可以先uninstall再安装

webpack的核心是:Entry、Output、Loaders、Plugins都在webpack.config.js文件里配置

Entry:代码的入口,也是打包的入口,可以是单个,也可以是多个

Output:打包成的文件,也可以是一个或多个

module.exports = {
  entry: {
    app: ‘./src/app.js‘,
    search: ‘./src/search.js‘
  },
  output: {
    filename: ‘[name].js‘, //这里[]里的name就是app和search也就是entry里的key值
    path: __dirname + ‘/dist‘
  }
};

// 写入到硬盘:./dist/app.js, ./dist/search.js

Loaders:loader 让 webpack 能够去处理其他类型的文件,并将它们转换为有效模块,以供应用程序使用,以及被添加到依赖图中。

注意:loader 能够 import 导入任何类型的模块(例如 .css 文件),这是 webpack 特有的功能,其他打包程序或任务执行器的可能并不支持。

在更高层面,在 webpack 的配置中 loader 有两个属性:

  1. test 属性,用于标识出应该被对应的 loader 进行转换的某个或某些文件。
  2. use 属性,表示进行转换时,应该使用哪个 loader。
module: {
    rules: [
      { test: /\.txt$/, use: ‘raw-loader‘ }
    ]
  }

Plugins:插件则可以用于执行范围更广的任务。包括:打包优化,资源管理,注入环境变量。

想要使用一个插件,你只需要 require() 它,然后把它添加到 plugins 数组中。多数插件可以通过选项(option)自定义。你也可以在一个配置文件中因为不同目的而多次使用同一个插件,这时需要通过使用 new 操作符来创建它的一个实例。

const HtmlWebpackPlugin = require(‘html-webpack-plugin‘); // 通过 npm 安装
const webpack = require(‘webpack‘); // 用于访问内置插件

module.exports = {
  module: {
    rules: [
      { test: /\.txt$/, use: ‘raw-loader‘ }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({template: ‘./src/index.html‘})
  ]
};

在上面的示例中,html-webpack-plugin 为应用程序生成 HTML 一个文件,并自动注入所有生成的 bundle。

webpack打包可以有什么方式:1.命令   2.配置   3.第三方脚手架

最简单的打包命令:

webpack app.js file.js            //app.js是入口文件      file.js是打包后的文件

使用配置:

在你需要打包的项目文件夹下建一个webpack.config.js配置代码如下

module.exports = {
  entry: {
    app: ‘./app.js‘,
  },
  output: {
    filename: ‘[name].[hash:5].js‘, //这里[hash:5]会随机生成一个版本号作为你的打包js版本
  }
};

然后在当前目录下执行:webpack    //就可以直接打包了

-------------------

打包都是很简单的,那下面就是最关键的webpack如何编译ES6/7的语法呢

这里我们就要用到Babel,执行下面两条命令安装babel-loader和preset(preset主要的作用就是指定我们的babel-loader打包成我们想要的样子,preset可以进行配置)

npm install [email protected] @babel/core

npm install @babel/preset-env --save-dev

怎么配置preset?如下在webpack.config.js文件里

再介绍两个重要插件,对编译es6/7的语法很重要

安装插件:

npm install babel-polyfill  --save

Babel Polyfill:表示全局垫片,各个浏览器对标准的实现不一样,用这个工具就可以统一方法,为应用准备的

安装插件:

npm install @babel/runtime --save

npm install @babel/plugin-transform-runtime --save-dev

Babel Runtime Transform:局部垫片,为开发框架做准备的

怎么使用呢?

在webpack.config.js的文件同目录下建一个.babelrc文件就是json

把webpack.config.js文件里options下的presets剪切到.babelrc文件里

{
	"presets": [
		["@babel/preset-env", {
			"targets": {
				"browsers": ["> 1%", "last 2 versions"]
			}
		}]
	],
	"plugins": ["@babel/transform-runtime"]
}

  这里要用标准的json数据格式

这时候就可以在cmd里执行:webpack

不管你js里用了什么的es6语法最后都会打包编译成浏览器可以识别的js方法

原文地址:https://www.cnblogs.com/bobo1/p/10898990.html

时间: 2024-07-30 07:24:13

webpack如何编译ES6打包的相关文章

gulp打包js多个文件夹并压缩混淆,编译ES6语法

感觉和webpack的步骤差不多 首先安装gulp:参考上一篇 安装完之后 新建一个文件目录起名 在当前目录下打开cmd 执行:npm init 创建package.json文件 然后安装第一个插件gulp-uglify 执行: cnpm install gulp-uglify --save-dev (这里暂时都用淘宝镜像cnpm) 这时候已经可以开始压缩es5的js文件了,但是我们要编译es6语法,那就需要babel 执行: cnpm install gulp-babel --save-dev

webpack编译es6

1 安装 已安装npm前提下,先全局后在使用的文件夹下安装局部,npm init 初始化package.json npm install webpack --save-dev 2 测试           运行后生成b.js 运行除了直接webpack命令,还可以修改package.json里面,在scripts里添加 "start":"webpack",然后npm start就可以了,npm run start一样,跟vue-cli全家桶的npm run dev一

使用可视化图表对 Webpack 2 的编译与打包进行统计分析

此文主要对使用可视化图表对 Webpack 2 的编译与打包进行统计分析进行了详细地讲解,供您更加直观地参考. 在之前更新的共十七章节中,我们陆续讲解了 Webpack 2 从配置到打包.压缩优化到调试状态等情况都进行了详细地讲解,在这一小节,我们通过可视化的图表对 Webpack 2 的打包编译过程进行一个更加深刻地认识,同时可视化图表也是对项目概况以及优化指导是一个非常直观的方案. 1. Webpack 2 的编译统计信息生成 让 Webpack 2 生成统计信息的参数主要是配置以下两个.

vue 入坑02 解析webpack的编译打包

上一章介绍了vue项目的搭建,里面自动集成了webpack 的部署和打包. webpack 其实就是一个javascript 程序的模块打包器.主要包括四部分:01 入口(entry) 02 输出(output) 03 loader 04 插件 plugins

使用webpack+babel构建ES6语法运行环境

1.前言 由于ES6语法在各个浏览器上支持的情况各不相同,有的浏览器对ES6语法支持度较高,而有的浏览器支持较低,所以为了能够兼容大多数浏览器,我们在使用ES6语法时需要使用babel编译器将代码中的ES6语法编译为ES5语法,下面就开始搭建一个基于webpack+babel的ES6语法运行环境. 2.需要安装的包 搭建环境之前我们需要安装以下JS包: webpack(安装webpack,必装) babel-loader和babel-core(babel转码器,必装) babel-preset-

webpack到底是怎么打包的,多入口,草稿

webpack.config module.exports={ entry:['entry1.js','entry2.js'], output:{ path:'./dist', filename:'output.js' } } 豪不意外,对于普通的多入口webpack.config文件,打包出来的文件和单入口文件一样,把两个文件作为自执行函数的参数放在数组传了进去,不过这两个文件的位置是1和2(最开始以为是0和1对吧),位置0的是webpack自己生成的一个函数.是长这个样子的. * 0 */

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');

gulp 编译es6 探究

1.gulp配置: var gulp = require('gulp') var fs = require("fs") var babelify = require('babelify') var browserify = require('browserify') var rename=require('gulp-rename') var uglifyjs = require('gulp-uglifyjs') gulp.task('es2015', () => { browse

Webpack - CommonJs & AMD 模块打包器

Webpack 是一个 CommonJs & AMD 模块打包器.可以把你的 JavaScript 代码分离为多个包,在需要的时候进行加载,支持预处理文件,例如 json, jade, coffee, css, less 等等. 官方网站      GitHub 您可能感兴趣的相关文章 网站开发中很有用的 jQuery 效果[附源码] 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HTML5 & JavaScript 特效 Web 开发中很实用的10个效果[源码下载] 12