javascript - Webpack:除 index.js 以外的默认文件

标签 javascript webpack ecmascript-6 es6-module-loader es6-modules

在当前的 webpack 项目中,我的代码被划分为模块,每个模块都有一个以 .module.js 结尾的主入口点。例如。对于模块 Util,入口点是 util.module.js,我通过编写 import util from 'modules/util/util.模块.js'

但是,由于所有模块的入口点语法相同,我宁愿避免指定入口的完整文件名。例如,如果我可以编写 import util from 'modules/util' 就好了。

我知道如果 util.module.js 是名称 index.js,这会起作用,但我如何告诉 Webpack 以相同的方式获取我当前的模块条目?

最佳答案

我将尝试概述一些现成的方法,从您的要求开始,逐步走向更传统的方法。

我感觉到构建工具的某些过度设计可能正在悄悄出现,因此我强烈建议您重新考虑所有这些是否真的有必要并重新考虑传统方法。

它类似于其他人期望模块如何解析,不需要 Webpack,也不会破坏内部尝试根据此策略解析模块的其他工具,如 eslint-plugin-import .

NormalModuleReplacementPlugin

由于您需要在尝试解析的模块中包含目录名称,因此您可以使用 NormalModuleReplacementPlugin 动态构建解析路径:

new webpack.NormalModuleReplacementPlugin(/modules\/(\w+)$/, (result) => {
    result.request += `/${result.request.split('/').pop()}.module.js`
}

您需要试一试以确保涵盖所有有效名称。

resolve.extensions

如果你真的想以某种方式区分这些模块,那么你可以通过为它们提供特定的扩展来做到这一点:

  • modules/util/index.module.js
  • modules/dashboard/index.module.js

配置就够了:

{
    resolve: {
        extensions: ['.js', '.module.js']
    }
}

包主

另一种方法是将所有模块提取为包,在 package.json 中指定 {main} .

这将使您走上通往 monorepository 的道路.

常规

传统的方法是将模块命名为index.js:

  • modules/util/index.js
  • modules/dashboard/index.js

关于javascript - Webpack:除 index.js 以外的默认文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40782168/

相关文章:

javascript - 自动缩放 DIV 元素并考虑页眉和页脚直到滚动

javascript - 我应该如何使用node.js 和导出来调用mysql 数据库?

reactjs - Webpack Code Splitting 'Loading chunk failed' 错误文件路径错误

javascript - webpack 将除 index.html 之外的所有内容构建到子文件夹中

typescript - 找不到模块 : Error: Can't resolve './app/app.module.ngfactory'

javascript - 静态元素交互

javascript - Excel 到 html 导出

javascript - 原型(prototype)对象的正确架构

javascript - ECMAScript 在其第六版中是否已经停止使用基于原型(prototype)的编程语法?

javascript - ES2015 导出类是否创建闭包?