Browserify中的require.context()等价物

jun*_*ell 7 javascript browserify webpack

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

modules
-counter.js
-index.js
-mod2.js
somefile.js
Run Code Online (Sandbox Code Playgroud)

这是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
Run Code Online (Sandbox Code Playgroud)

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

import modules from './modules';
new Something({
  modules
});
Run Code Online (Sandbox Code Playgroud)

require.context()仅限于Webpack.由于Browserify与Webpack相当,是否有一个与此相似的Browserify?

小智 0

我有同样的问题,最终使用 require-bulk npm 模块,然后批量化以达到 Webpack 的 require.context 所需的效果。在你的 index.js 文件中,它会是这样的:

const bulk = require('bulk-require')
bulk(__dirname, ['./**/!(*.index).js'])
Run Code Online (Sandbox Code Playgroud)

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