You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化webpack.common.js中引用public目录的路径写法?

问题

我的项目文件夹结构如下:

public
source
  client
    config
      webpack.common.js

我需要在webpack.common.js中引用public目录,目前使用的写法是:

path.resolve(__dirname, '../', '../', '../', 'public')

该写法虽然可行,但冗长繁琐,请问是否有更优的实现方式?

优化方案

以下是几种更简洁易维护的实现方式:

  • 简化path.resolve的路径片段
    path.resolve支持直接合并多层级的路径回溯,不需要拆分多个../,可以直接写成:

    path.resolve(__dirname, '../../../public')
    

    或者拆分片段的写法:

    path.resolve(__dirname, '../../..', 'public')
    

    两种写法和原代码功能完全一致,但更简洁直观。

  • 定义项目根目录复用路径
    如果项目中多处需要引用根目录下的文件,可以先定义根目录的绝对路径,再基于它拼接public目录,后续维护更方便:

    // 获取项目根目录(public和source的共同父级目录)
    const rootDir = path.resolve(__dirname, '../../../');
    // 引用public目录
    const publicDir = path.resolve(rootDir, 'public');
    

    后续如果目录结构调整,只需要修改rootDir的定义即可,无需逐个修改所有路径引用。

  • 使用path.join实现(注意适用场景)
    若只是单纯拼接路径,也可以用path.join,效果和上述写法一致:

    path.join(__dirname, '../../../public')
    

    需注意path.join仅做路径片段拼接,而path.resolve会生成绝对路径并解析特殊符号,webpack配置中通常更推荐resolve来确保路径绝对可靠。

内容的提问来源于stack exchange,提问作者Taste of Leaving

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 19:05:21