当前位置: 首页 > news >正文

webpack 的一点知识

多个入口共享多个模块

在使用webpack搭建多页面应用时候需要多个入口,这个时候需要考虑到模块共享问题了
可以使用entry.dependOn 来处理

entry: {home: {import: "./pages/home/index.js",// 其中vendors里边使用到模块,不会打入home对应的chunk当中了dependOn: 'vendors'},articles_detail: "./pages/articles/detail.js",articles_index: "./pages/articles/index.js",about: "./pages/mine/about/index.js",album: "./pages/mine/album/index.js",navigation: "./pages/navigation/index.js",// 共享的入口vendors: ['jquery'],},

需要处理的问题
记得引入的html文件,其中chunks需要有vendors 否则不会被引入html文件,但是如果不写chunks,则所有的chunk都会被引入该html文件

 new HtmlWebpackPlugin({template: path.join(__dirname, "src/pages/home/index.html"),filename: "pages/home.html",chunks: ["home", "vendors"],title: '首页',conpress: true}),

给单独某个入口指定chunk名称

可以通过里边的filename来指定

 home: {import: "./pages/home/index.js",filename: 'pages/home/[name].js',dependOn: 'vendors'},

给所有的模块输出默认路径

 output: {// 这个是指定了所有资源的输出基本路径path: __dirname + '/dist',// 指定所有chunk默认路径 优先级低于单独给某个入口设置filename: 'script/[name].js',// 导出的通过asset资源管理 输出的文件放的位置assetModuleFilename: './images/[hash][ext][query]'},

给资源管理文件单独设置输出位置

{ // 图片文件test: /\.(png|jpe?g|webp|gif)$/, type: 'asset',generator: {filename: 'static/images/[hash][ext][query]'}
},
{   // 字体等文件test: /\.(eot|svg|ttf|woff2?)$/,type: "asset/resource",generator: {filename: "static/media/[hash:8][ext][query]",},
}

output.publicPath

在将资源放在其他服务器或者cdn托管时候,可以指定路径

Rule.enforce

在对其中loader进行匹配处理时候,
Normal 阶段: loader 上的 常规方法,会按照 前置(pre)、普通(normal)、行内(inline)、后置(post)类别的loader进行 顺序调用。模块源码的转换, 发生在这个阶段
我们可以通过将一个loader 的enforce 指定为pre 让他优先处理模块

// 禁用前置和普通 loaders
import { b } from '-!./file2.js';

output.clean

可以在打包输出之前先清理dist目录,而 clean-webpack-plugin可以选择性的清理,一般情况下设置clean 即可

Rule.generator

publicPath 跟output.publicPath一样都是指定输出的内容前面的字符串
generator.outputPath 指定相对于 output.path 的路径,当然如果没有指定generator.outputPath
直接将filename写成

 filename: 'static/images/[hash][ext][query]'

也是可以创建目录的

{ // 图片文件test: /\.(png|jpe?g|webp|gif)$/, type: 'asset/resource',generator: {outputPath: 'static/images',publicPath: 'fuck',filename: '[hash][ext][query]'}
},

生成的连接

 <img src="fuck88f068a97a175bca5524.png" alt="">

但是存在一个问题(我目前也不知道怎么解决):
如果将目录结构写在outputPath 这个只是将资源放在指定的目录结构里边,但是,路径上并没有携带上这个目录结构,所以需要指定publicPath,

比如将dist作为网站根目录

 publicPath: '/static/images/',outputPath: 'static/images',filename: '[hash][ext][query]'

如果直接将目录卸载filename里边,则创建了目录同时也能正确引入目录结构

http://www.lryc.cn/news/108751.html

相关文章:

  • Python 双目摄像机控制(windows + linux)
  • mybatisplus实现自动填充 时间
  • P5732 【深基5.习7】杨辉三角
  • ubuntu调整路由顺序
  • 集成学习算法是什么?如何理解集成学习?
  • npm配置最新淘宝镜像
  • 网络基础1
  • 2023年电赛---运动目标控制与自动追踪系统(E题)发挥题思路
  • 61 # http 数据处理
  • 模版下载和Excel文件导入
  • Datax 数据同步-使用总结(一)
  • 代码随想录算法训练营第九天| 232.用栈实现队列,225.用队列实现栈
  • 求解二次方程
  • 【hive 运维】hive注释/数据支持中文
  • 架构,性能和游戏 《游戏编程模式》学习笔记
  • Spring Bean的生命周期
  • 基于量子同态的安全多方量子求和加密
  • 前端自动化测试:确保质量和稳定性的关键步骤
  • 《Ansible自动化工具篇:Centos操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》
  • Java实现十大经典排序算法之快速排序
  • 【0803作业】创建两个线程:其中一个线程拷贝图片的前半部分,另一个线程拷贝后半部分(4种方法)
  • php运算符的短路特性
  • C语言假期作业 DAY 13
  • 以产品经理的角度去讲解原型图---会议OA项目
  • C++ 外部变量和外部函数
  • C# Onnx Paddle模型 OCR识别服务
  • MCUXpresso for VS Code -- 基于VSCode开发RT1176
  • MySQL的使用——【初识MySQL】第二节
  • MySQL最终弹-并发(脏读,不可重复读,幻读及区别),JDBC的使用和安装,最全万字
  • ⌈C++⌋从无到有了解并掌握C++面向对象三大特性——封装、继承、多态