首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从动态目录中要求使用webpack的JavaScript

如何从动态目录中要求使用webpack的JavaScript
EN

Stack Overflow用户
提问于 2016-11-04 23:53:00
回答 2查看 9.8K关注 0票数 22

我有一些老式的、普通的、老式的ES5 JavaScript,我需要将其放入我的应用程序中,该应用程序将使用webpack作为一个绑定器。问题是这些文件的位置在一个动态路径的文件夹中。看来,在requirerequire.context中的表达式中,webpack并不能很好地工作,它根本不允许这样做。

对于需要某个目录及其子目录中的所有文件的已知路径目录,这种方法适用于

let domainRequires = require.context('./app/domain', true, /\.js$/); domainRequires.keys().forEach(domainRequires);

因为我不能在require.context中使用表达式,所以我试着只使用普通的require,它是不工作的

require('../../path/to/code/my-library-' + versionNumber + '/domain/clazz.js');

使用完整的相对路径。

我也尝试过使用require.context,但增强了正则表达式部分以使其正常工作,但没有成功:

require.context('../../path/to/code', true, /^my-library-.*\/domain\/.*\.js$/);

欢迎任何想法、建议或解决方案。如果我需要和webpack一起使用第三方软件,也没问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-11 05:18:28

我最终弄明白了这一点。通过使用webpack resolve.alias,我可以添加以下内容:

代码语言:javascript
复制
resolve: {
  alias: {
    common: path.resolve(__dirname, '../../path/to/code/my-library-' + versionNumber + '/domain')
  }
}

webpack.config中。

然后,在我的代码中,我可以通过以下方式请求/domain下的所有文件:

代码语言:javascript
复制
var commonRequires = require.context('common', true, /\.js$/);
commonRequires.keys().forEach(commonRequires);

同样,我可以通过以下方式获得单个文件:

代码语言:javascript
复制
require('common/clazz.js'); // ../../path/to/code/my-library-1.0.0/domain/clazz.js

最后,为了获得versionNumber,我使用node的fs模块读取json文件,使用JSON.parse(file),然后在webpack.config的顶部检索版本

票数 16
EN

Stack Overflow用户

发布于 2017-12-13 21:01:05

从Webpack 3.9 (我认为)开始,commonRequires是不需要的。我在webpack.config.js中运行以下代码:

代码语言:javascript
复制
resolve: {
  alias: {
    tmpDir: path.resolve(__dirname, '/tmp')
  }
}

然后我加载我的自定义模块如下:

代码语言:javascript
复制
const dynModule = require('tmpDir/dyn_module.js');

我不确定我是否遗漏了您的需求中的什么,但是我不需要commonRequires,而Webpack构建得很好(并且它很好用)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40426912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档