Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Webpack:index.js以外的默认文件_Javascript_Webpack_Ecmascript 6_Es6 Module Loader_Es6 Modules - Fatal编程技术网

Javascript Webpack:index.js以外的默认文件

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,我知道

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

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


如果
util.module.js
是name
index.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
数组可能是代码搜索能力和惯例之间的完美结合。谢谢