配置文件方式,module:{loaders:【{}】}
5+版本写法
高版本webpack写法
高版本webpack写法
高版本webpack写法
webpack4 module 和babel的安装方法都有不同
1,https://www.babeljs.cn/setup#installation
npm install --save-dev babel-loader @babel/core
module: { rules: [ { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" } ] }
npm install @babel/preset-env --save-dev
.babellrc
{ "presets": ["@babel/preset-env"] }
重要的是看官网 cnpm和npm不要混用
如果混用出现错误 把node-modules文件夹删掉
重新 npm install
const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); module.exports = { entry: './src/app.js', output: { filename: 'js/[name].bundle.js', path: path.resolve(__dirname, 'dist') }, module: { rules: [ { test: /\.js$/, loader: 'babel-loader', // 排除 exclude: /node_modules/, query: { presets: ["@babel/preset-env"] } } ] }, plugins: [ new CleanWebpackPlugin(), new HtmlWebpackPlugin({ filename: 'index.html', // html 标题 title: 'this is a.html', // 使用模板 template: 'index.html', // script标签插入位置 inject: 'body' }), ], };
安装babel:
npm install --save-dev babel-loader @babel/core npm install @babel/preset-env --save-dev
webpack.config.js
const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); module.exports = { entry: './src/app.js', output: { filename: 'js/[name].bundle.js', path: path.resolve(__dirname, 'dist') }, module: { rules: [ { test: /\.js$/, loader: 'babel-loader' } ] }, plugins: [ new CleanWebpackPlugin(), new HtmlWebpackPlugin({ filename: 'index.html', // html 标题 title: 'this is a.html', // 使用模板 template: 'index.html', // script标签插入位置 inject: 'body' }), ], };
package.json
{ "name": "webpack-demo", "version": "1.0.0", "description": "", "main": "index.js", // 引入babel "babel": { "presets": ["@babel/preset-env"] }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "webpack --config webpack.dev.config.js" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "@babel/core": "^7.8.3", "@babel/preset-env": "^7.8.3", "babel-loader": "^8.0.6", "clean-webpack-plugin": "^3.0.0", "css-loader": "^3.4.2", "file-loader": "^5.0.2", "html-webpack-plugin": "^3.2.0", "style-loader": "^1.1.3", "webpack": "^4.41.5", "webpack-cli": "^3.3.10" }, "dependencies": { "lodash": "^4.17.15" } }
babel官网:
https://babeljs.io/setup#installation
babel中文网:
原文;
module: {loaders: [{test: /\.js$/,loader: 'babel'}]},
应该:
module: {rules : [{test: /\.js$/,loader: 'babel'}]},
原因:
webpack v2 之后都用rules 了
exclude,include 排除,指定babel打包的范围
使用loaders转化es6
babel
指定js编译版本
.babelrc {'presets':['lastest']}
新版本已经不支持loaders了
babel-loader@7版本
npm install --save-dev babel-loader@7
module:{ rules:[ { test:'/\.js$/, use:{ loader:'babel-loader', options:{ "presets":['latest'] } } } ] }
使用预处理js的loader:babel(将es6等转换为浏览器可以直接处理的JS)
第一步要安装 命令行输入npm i --save-dev babel-loader babel-core
第二步配置babel使其可以转化指定版本的js,如es2015,使用presers进行配置 指定完之后需安装 npm i --save-dev babel-preset-latest
第三步 使用loader并进行相关配置
除了直接在loader使用的时候配置babel,也可以在package.json中进行babel的配置如下:
loader其他参数讲解:exclude(设置不需要处理的文件的目录)、include(需要使用该loader去处理的文件目录,只打包该目录下的文件)、loaders(loaders是数组类型的一连串loader,不再是单个字符串类型的单个loader)
package.json中定义“babel”:{
preset:}
npm i --save-dev babel-loader babel-core
npm i --save-dev babel-preset-latest
配置文件中属性modules:{
loaders:[
test:/\.js$/,
loader:'babel',
query:{
presets['latest']}
]
}
最后的 babel 配置
module.loaders 下的参数:test、exclude、include、loader、loaders(loaders是数组类型的一连串loader,不再是单个字符串类型的单个loader)
目前官方webpack4相关的属性修改蛮多的好像。。。
exclude: './node_modules/'
该目录下的 js 文件不用再去用 babel 打包,因为都打包过了 ... 但是由于代码目前没有引用 node_modules(require 引用) 所以打包速度改变不大... (后续对 npm 包引用的增多,效果增大)
指定打包的范围
include: './src/'
只打包 src 目录下的文件,速度加快很多
将 babel 的 presets 从 package.json 配置中移到 webpack 对应 loader 下的 query 设置
存在问题 代码很少但打包很久。。。。
问题出在打包 babel-loader 上,babel-loader 非常耗时的语法转换
此时的配置文件
老师的babel-core@6.18.0 和 babel-loader@6.2.7 版本号
webpack 使用 babel 之前 npm 安装 babel, babel 的使用
npm install --save-dev babel-loader babel-core
webpack 配置 babel-loader
module: { loaders: [ { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" } ] }
webpack 配置 evn presets(这点不是很懂),指定 presets ,告诉 babel-loader 怎么处理 js;还可以通过根目录下创建 .babelrc 配置文件,设置 { "presets": ["env"] },官方;还可以在 package.json 文件中添加 "babel": { "presets": ["latest"] } ;
module: { loaders: [ { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader", query: { 'presets': ['latest'] } } ] }
安装 evn presets 插件:npm install --save-dev babel-preset-latest (官网没有 lastest 版本,而是 推荐使用 npm install babel-preset-env --save-dev,babel-preset-env replaces es2015, es2016, es2017 and latest)https://babeljs.io/docs/plugins/
http://babeljs.io/docs/setup/#installation
安装babel插件的命令是npm install --save-dev babel-loader babel-core