Javascript Webpack:index.js以外的默认文件
在当前的webpack项目中,我的代码被划分为多个模块,每个模块都有一个以Javascript Webpack:index.js以外的默认文件,javascript,webpack,ecmascript-6,es6-module-loader,es6-modules,Javascript,Webpack,Ecmascript 6,Es6 Module Loader,Es6 Modules,在当前的webpack项目中,我的代码被划分为多个模块,每个模块都有一个以.module.js结尾的主入口点。例如,对于模块Util,入口点是Util.module.js,我通过编写import Util from'modules/Util/Util.module.js' 然而,由于所有模块的入口点都有相同的语法,我宁愿避免指定入口的完整文件名。例如,如果我可以从'modules/util'编写import util,那就太好了 如果util.module.js是nameindex.js,我知道
.module.js
结尾的主入口点。例如,对于模块Util
,入口点是Util.module.js
,我通过编写import Util from'modules/Util/Util.module.js'
然而,由于所有模块的入口点都有相同的语法,我宁愿避免指定入口的完整文件名。例如,如果我可以从'modules/util'编写import util,那就太好了
如果util.module.js
是nameindex.js
,我知道这是可行的,但是我怎么能告诉Webpack以同样的方式获取我当前的模块条目呢?我将尝试概述一些现成的方法,从您的需求开始,朝着更传统的方向发展
我感觉到一些过度工程化的构建工具可能正在悄然出现,因此我强烈建议您重新考虑所有这些是否真的有必要,并重新考虑传统方法
这类似于其他人希望模块得到解决的方式,不需要Webpack,也不会破坏其他内部尝试根据此策略解决模块的工具,如
由于您需要在试图解析的模块中包含目录名,因此可以使用NormalModuleReplacementPlugin
动态构建解析路径:
new webpack.NormalModuleReplacementPlugin(/modules\/(\w+)$/, (result) => {
result.request += `/${result.request.split('/').pop()}.module.js`
}
您需要处理这个问题,以确保覆盖所有有效名称
如果您确实想以某种方式区分这些模块,那么您可以通过为它们提供特定的扩展来做到这一点:
modules/util/index.module.js
modules/dashboard/index.module.js
配置以下各项就足够了:
{
resolve: {
extensions: ['.js', '.module.js']
}
}
包干管
另一种方法是将所有模块提取为包,在中指定{main}
这将使你走上一条通往成功的道路
传统的
传统的方法是将模块命名为index.js
:
modules/util/index.js
modules/dashboard/index.js
这是一个非常完整的答案!我承认,我已经花了两天的时间寻找描述的初始方法。我的模块文件名为modules/[moduleName]/[moduleName].module.js
,因此我认为必须进行一些模式匹配才能正确解析。经过仔细考虑后,将文件重命名为index.module.js
并将.module.js
添加到extensions
数组可能是代码搜索能力和惯例之间的完美结合。谢谢