webpack随笔
Posted 阿曾的奶油汤
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webpack随笔相关的知识,希望对你有一定的参考价值。
webpack 默认只打包js文件
入口文件配置
单个js
entry:\'./index.js\'
多个入口打包成一个js,array格式
entry:[\'./a.js\',\'./b.js\']
多个入口打包成多个js,name为key
entry:{pageone:\'./a.js\',pagetwo:\'./b.js\'}
webpack 打包html文件
正常打包单页面html
- 使用插件(plugins)对HTMl文件进行打包(html-webpack-plugin)
- 安装依赖 npm i html-webpck-plugin -D
- 引入 const HtmlWebpackPlugin = require(\'html-webpck-plugin\')
使用
plugins:[ new HtmlWebpackPlugin({ // 已template中的html作为模版,自动引入了打包后的css/js template:\'./src/index.html\', // 输出文件名 filename: \'demo,html\', // 需要引入的js文件,引入顺序从后往前 chunks: [\'common\',\'vendor\'], }), ],
webpack 打包css文件
正常打包css文件
- 是在module中配置loader
- 安装依赖: npm i css-loader style-loader -D
- 编写css文件时,需要在打包的js中引入css
使用
module: { rules: [ { // 正则匹配文件 test: /\\.css$/, // 使用哪些loader use: [ // loader执行顺序:从右往左、从下往上 \'style-loader\', // 打包后自动插入html中 \'css-loader\' ] } ] }
打包less、scss文件
- 使用方式与css相同,只需添加相对应的依赖
- less-loader、sass-loader得写在css-loader下面先进行打包
打包css为单独文件
- 使用插件 npm i mini-css-extract-plugin
- 引入插件 const MiniCssExtractPlugin = require(\'mini-css-extract-plugin\');
在plugins模块中使用插件
plugins: [new MiniCssExtractPlugin({ filename: \'index.css\', })]
在css的rules中使用MiniCssExtractPlugin
module: { rules: [ { // 正则匹配文件 test: /\\.css$/, // 使用哪些loader use: [ // loader执行顺序:从右往左、从下往上 MiniCssExtractPlugin.loader \'css-loader\' ] } ] }
- 会打包后生成一个css文件并且在html中外链引入
处理css兼容浏览器内核
- 下载postcss-loader,npm i postcss-loader -D
- css-loader前添加postcss-loader
新建postcss.config.js文件
module.exports = { plugins: { autoprefixer: { browsers: [\'ie>9\', \'>1% in CN\'] }, // 浏览器版本 } }
压缩css文件
- 下载并引入插件 const OptimizeCSSAssetsPlugin = require(\'optimize-css-assets-webpack-plugin\');
使用插件
plugins: [new OptimizeCSSAssetsPlugin()]
打包图片资源
css等文件中的图片资源
- 下载url-loader
配置
module: { rules: [ { test: /\\.(png|jpg|gif|jpeg)$/, use: [ { loader: \'url-loader\', options: { limit: 8192, //小于这个数时,会转成base64 name: \'images/[name][hash:8].[ext]\', //输出到文件夹,基于output根目录 [ext]:保留原格式 [name]:保留文件名 [hash:8]:添加8位hash }, }, ], }, ] }
html中的图片资源
- 下载html-loader
配置
module: { rules: [ { test: /\\.html$/, loader: \'html-loader\', }, ] }
webpack打包其他资源(字体包)
- 下载file-loader
配置
module: { rules: [ { test: /\\.(woff(2)?|ttf|eot)$/, use: [ { loader: \'file-loader\', options: { name: \'[name].[ext]\', publicPath: \'../fonts/\', outputPath: `fonts/`, }, ], }, ] }
file-loader和url-loader区别
- file-loader 可以指定要复制和放置资源文件的位置,以及如何使用版本哈希命名以获得更好的缓存。此外,这意味着 你可以就近管理图片文件,可以使用相对路径而不用担心部署时 URL 的问题。使用正确的配置,webpack 将会在打包输出中自动重写文件路径为正确的 URL。
- url-loader 允许你有条件地将文件转换为内联的 base-64 URL (当文件小于给定的阈值),这会减少小文件的 HTTP 请求数。如果文件大于该阈值,会自动的交给 file-loader 处理。
webpack热更新
- 下载webpack-dev-serve
package.json中配置
"dev": "cross-env NODE_ENV=development webpack-dev-server --open --config build/webpack.dev.js --inline --host 0.0.0.0",
以上是关于webpack随笔的主要内容,如果未能解决你的问题,请参考以下文章