Browserify 中的 require.context() 等效项

Posted

技术标签:

【中文标题】Browserify 中的 require.context() 等效项【英文标题】:require.context() equivalent in Browserify 【发布时间】:2017-03-29 22:59:21 【问题描述】:

在使用 Webpack 的项目中,我们可以使用require.context() 将几个.js 文件导出到一个模块中。所以在modules 目录中,有几个模块:

modules
-counter.js
-index.js
-mod2.js
somefile.js

counter.jsmod2.js 是模块。 index.jsrequire.context():

const files = require.context('.', false, /\.js$/)
const modules = 

files.keys().forEach((key) => 
   if (key === './index.js') return
   modules[key.replace(/(\.\/|\.js)/g, '')] = files(key).default
)

export default modules

所以在modules 文件夹之外的单独文件somefile.js 中,我可以这样做:

import modules from './modules';
new Something(
  modules
);

但是require.context() 只存在于 Webpack 中。由于 Browserify 可以与 Webpack 媲美,那么是否有 Browserify 等效于这样做?

【问题讨论】:

【参考方案1】:

我有同样的问题,最终使用了 require-bulk npm 模块,然后使用bulkify 来实现 Webpack 的 require.context 所需的效果。 在你的 index.js 文件中,它会是这样的:

const bulk = require('bulk-require')
bulk(__dirname, ['./**/!(*.index).js'])

这将包括目录中的所有文件

【讨论】:

以上是关于Browserify 中的 require.context() 等效项的主要内容,如果未能解决你的问题,请参考以下文章

./~/constants-browserify/constants.json 中的错误

Yarn Workspaces 和 Browserify - 子文件夹中的 package.json 会破坏构建

我应该使用 Browserify 还是 Webpack 来延迟加载 Angular 1.x 中的依赖项 [关闭]

如何将 jquery-slider 添加到 browserify 中的依赖项列表中?

为在 phantomjs 中的 browserify 包上运行的 jasmine 测试生成伊斯坦布尔代码覆盖率报告(通过 grunt)

Browserify