webpack单独启动目录方法

项目中的文件多了,开发模式实时编译,会变得很慢,影响开发效率。很多模块是不相干的,没必要同时启动,这个时候就需要

只启动项目的某个文件夹。

例如:

复制代码
src
--pages
  --pageA
    --index.js
    --index.ejs
  --pageB
    --index.js
    --index.ejs
  --pageC
    --index.js
    --index.ejs
复制代码

webpack打包页面的关键点,在于入口 entry 和 html-webpack-plugin

entry决定了页面的数量

html-webpack-plugin决定了要生成多少个页面

实际上,html-webpack-plugin一般要基于entries数组来生成,这样就需要处理入口文件就行了。

可以使用 glob 来读取入口文件,例如 glob('./src/pages/*/index.js'),这样得到的数组,就可以获取到所有的入口。

复制代码
let entries = [];
glob('./src/pages/*/index.js').forEach(path => {
    //从文件路径中得到文件名称
    const chunk = path.split("./src/pages/")[1].split(".js")[0];
    entries.push({
        path: path,
        chunk: chunk
    })
})
复制代码

可以通过 glob('./src/pages/*/index.ejs')来读取模板,这里直接使用entries数组

复制代码
entries.forEach(item => {
  let {path,chunk} = item;
  const conf = {
    filename: chunk + "/index.html";,
    template: path,
    inject: false,
    ...
  };
  plugins.push(new htmlWebpackPlugin(conf));
});
复制代码

这样可以得到HTMLWebpackPlugin的列表。

如果要只启动一个目录,只有保证,entries只添加该目录下的index.js文件就行了。

例如:npm dev pageA, 只启动pageA这一个目录

可以直接把entries写成

entries = {
    path: '',
    chunk: 'pageA'
}

或者

把 glob('./src/pages/*/index.js') 改为 glob('./src/pages/pageA/index.js')

或者

glob('./src/pages/*/index.js').forEach(path => {
    //for循环中进行拦截
})

这样就能快速启动单个目录。

posted @   全玉  阅读(537)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2017-05-27 移动端键盘遮挡问题
2017-05-27 web常见攻击 Sql注入 CSRF,XSS,盗链
2017-05-27 javascript new关键字做了什么
点击右上角即可分享
微信分享提示