?
默认能处理自带的js
file-loader会把这个文件移动到dist目录下,并且给它改个名,console.log(avatar)输出其实就是改名后的文件名
思考题: file-loader都能处理哪些文件后缀?
使用options可以使得改名使用的名字和原来一致(注意外层要加‘’)
打包dist根目录下的某个文件夹下
它也能打包图片,url-loader是会把图片转换成一个base64,然后放到打包输出文件中。
但是不一定合理,如果图片非常非常小,打包成base64可以,要是很大,就不合理了,打包时间太长
上述配置是,当图片不超过2048的时候,使用url-loader,转换成base64导入到js文件中
测试样例超过20kb,如file-loader一模一 样
本节学完后: 对file-loader和url-loader看文档了解更多
要使用两个loader,因此要改成一个数组
css-loader会分析各个css文件之中的关系,比如index.css 引入了main.css文件,最终把这些合并成一个css
style-loader会把打包后的css挂载到页面上
还需要一个sass-loader
需要注意装sass-loader还需要装一个node-sass包
postcss-loader可以处理
3.1 首先安装 npm install .......
3.2 需要设置一个postcss.config.js配置文件
3.3 再配置
3.4 npm isntall autoprefixer -D
常规情况下执行是,首先打包index.scss会依次从下往上执行loader,然后碰到index.scss中引入的语句,引入对应的scss文件,但不会又从下往上执行loader,可能造成引入的scss就没有sass解析过
也就是在css-loader中配置,当遇到引入scss会重新执行之前的2个loader
模块化打包
这样就不会导致引入全局样式而与其他冲突
从阿里图标库下载了对应文件
然后
去除上个例子中的模块化css配置属性
然后遇到报错
字体文件例如.eot怎么打包,依然是使用file-loader
html-webpack-plugin
但是上述配置后,index.html中没有对应的入口,只是引入了打包后的js文件
继续优化
这样就会基于index.html这个模板在dist下面生成一个index.html进行引入打包后的js文件
类似于vue react的生命周期函数
npm install clean-webpack-plugin -D
就会在打包之前,清理dist下的所有文件
相当于是
如果在output中没有改名的话,打包生成的默认名字是main.js ,当然还可以配置多入口,继续阅读下面
遇到打包错误,由于两次生成的都是叫做bundle.js
解决办法
name第一次对应main 第二次对应sub
本节阅读完后:对着entry、output文档过一遍,不需要全看懂
重点在GUIDES目录下的
要一行一行看过去
development模式下,sourceMap已经自动打开,先关掉打包试试
就是我们如果写的代码有错误,比如console拼写成sonssle,我们查看报错,会定位到打包后的文件,但我们通常希望能够定位到源代码的目录某行错误,而不是打包后的文件哪行错误
我们就可以通过SourceMap来做这样一件事情,概括如下
我们可以这么配置:
这个时候就能跳转到源代码错误位置
当然,所带来的是打包速度降低
原理是会在dist打包目录下添加一个
然后以sourceURL指向错误,存在缺陷是,复杂情况下,可能报错不全面
开发比较好的方案是:
线上的方案是:
额外说明
通用方式
source-map
上述能自动监听到打包的代码出现了变动,但是不会起一个服务器,不能发请求,和自动刷新浏览器
继续优化 ,代码变动能自动打包自动刷新
开启一个服务器,可以发起异步请求
继续优化,使得可以跨域,
使用express
webpack(config)能生成一个webpack编译器
然后使用了express中间件,传入编译器,路径下发生变动时,重新编译
本节学完以后:全看完
因为打包会放到内存当中,提升打包速度
重启下命令,避免缓存配置不生效
一个模块的代码变化后,页面没有进行热更新,需要进行一些小的操作
因为css-loader底层已经帮我们实现了上述的操作。
额外例如vue借助的是vue-loader、react借助的是babel-preset对应的loader都帮我们实现了对应的操作
本质上我们都需要这样写一些这样的代码。
本节学完以后:读文档
其次配置文件webpack
当我们使用babel-loader去处理js的时候,实际上babel只是和webpack做通信的桥梁,但是babel-loader并不会帮你把es6语法给转换。
继续配置
因为目前只转码了一部分,例如转码后的一些语法,如arr.map仍然在低版本浏览器中是不存在的。
需要一个polyfill进行补充
然后import 放到业务代码最顶部
没有用polyfill的代码大小
现在使用后
继续进行优化包大小:
presets中的参数的第一个参数是名称,第二个是额外参数是个对象。
useBuiltIns: ‘usage‘ 表示只对写的一些业务代码进行兼容处理
babel是如何转vue react的一些语法的???可以进一步学习!
安装完毕后,再配置webpack
请确保已经装了对应
可以单独一个文件,然后把对应配置项提取出来,例如上面这个
需要注意,不能有注释
安装完后进行配置
执行顺序是从下往上,先执行preset-react再执行preset-env
原文:https://www.cnblogs.com/fe-linjin/p/11298956.html