webpack学习笔记
1.第一种使用方法:命令行(没有配置文件)--把app.js打包成bundle.js
1 webpack app.js -o bundle.js
2.第二种使用方法:配置文件:
如果配置文件的名称不是webpack.config.js可以在命令行中修改(假设你的配置文件为webpack.conf.js)
webpack --config webpack.conf.js
3.es6文件的引入与导出
1 //引入 2 import sum from './sum' 3 //sum.js文件导出 4 export default function (a,b) { 5 return a+b 6 }
4.common.js文件的引入与导出
1 //引入 2 var minus = require('./minus') 3 //minus.js文件导出 4 module.exports = function (a,b) { 5 return a - b 6 }
5.AMD文件的引入与导出
1 //引入与使用 2 require (['./muti'],function (muti) { 3 console.log('muti(2,3)=',muti(2,3)) 4 }) 5 6 //导出muti.js文件 7 8 define(function (require,factory) { 9 'use strict' 10 return function (a,b) { 11 return a*b 12 } 13 })
6.Es6的编译配置:当需要编译ES6语法的时候使用:
//安装 //最新版本 npm install babel-loader@8.0.0-beta.0 @babel-core //普通版本 npm install --save-dev babel-loader babel-core //只知道需要打包,但是还不知道用什么规范来打包,于是需要给loader指定一个规范; //主要的规范有: es2015 es2016 es2017 env babel-preset-react babel-preset-stage 0-3
presets的安装:
1 npm install @babel/preset-env --save-dev//最新 2 npm install babel-preset-env --save-dev//普通
targets的相关配置:
1 targets 2 targets.browsers 3 targets.browsers:"last 2 versions" 4 targets.browsers:">1%" 5 browserslist 6 Can I use
loaders以及规范和targets的配置文件:
1 //webpack.config.js 2 module.exports = { 3 entry:{ 4 app:'./app.js' 5 }, 6 output:{ 7 filename:'[name].[hash:8].js' 8 }, 9 module:{ 10 rules:[ 11 { 12 test:/\.js$/, 13 use:{ 14 loader: 'babel-loader', 15 options:{ 16 presets:[ 17 ['@babel/preset-env',{ 18 targets:{ 19 // browsers:['>1%','last 2 versions'] 20 browsers:['last 2 versions'] 21 // chrome:'52' 22 } 23 }]//给babel指定presets 24 ] 25 } 26 }, 27 exclude:'/node_modules/' 28 } 29 ] 30 } 31 }
测试的es6代码:
1 let func = () =>{} 2 const NUM =45 3 let arr = [1,2,3] 4 let arrB = arr.map(item =>item*2) 5 console.log('new Set(arrB)',new Set(arrB))
命令行webpack:结果let 等被转化为var ,但是部分没有被转换:
一些函数和方法需要使用Babel Polyfill和Babel Runtime
比如:
1 Generator 2 Set 3 Map 4 Array.from 5 Array.prototype.includes
Babel Polyfill:是一个全局垫片,为应用准备的,
安装:
1 npm install babel-polyfill --save
引入app.js文件
1 import "babel-polyfill"
Babel Runtime Transform:是一个局部垫片,为开发框架准备;
安装:
1 npm install babel-plugin-transform-runtime --save-dev 2 npm install babel-runtime --save
配置文件:.babelrc:实际是一个json文件
2 { 3 "presets":[ 4 [ 5 "@babel/preset-env",{ 6 "targets":{ 7 "browsers":["last 2 versions"] 8 } 9 }] 10 ], 11 "plugins":["@babel/transform-runtime"] 12 }
7.在启动webpack时,需要给package.json添加配置:
1 "scripts": { 2 "dev": "webpack --mode development", 3 "build": "webpack --mode production" 4 }
一辈子很短,努力的做好两件事就好;第一件事是热爱生活,好好的去爱身边的人;第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值,而不是仅仅为了赚钱;