正如另一个答案所暗示的,您应该在每个目录中创建一个index.js 并明确导出内容
@company/customproject/index.js
import {BaseContainer, SomeOtherContainer} from './src/containers'
export {
BaseContainer,
SomeOtherContainer
}
@company/customproject/src/containers/index.js
import BaseContainer from './BaseContainer'
import SomeOtherContainer from './SomeOtherContainer'
export {
BaseContainer,
SomeOtherContainer
}
另一个自动加载整个目录的选项是使用require 和module.exports 来导出每个扫描的文件。使用 ES6 导入/导出以及 module.exports 和默认导出语句,您可能会遇到冲突。
@company/customproject/index.js
const fs = require('fs')
const modules = {}
fs.readdirSync(__dirname+'/src/containers').forEach(file => {
file = file.replace('.js', '')
modules[file] = require('./src/containers/'+file)
// map default export statement
if (modules[file].default) {
modules[file] = modules[file].default
}
})
module.exports = modules
然后在任何 ES5 或 ES6 模块中简单地使用它
const {BaseContainer} = require('@company/customproject')
或
import {BaseContainer} from '@company/customproject'