以下是用于说明目的的伪配置文件:
网页包.配置
...
entry: {
'animals': 'index'
}
...
索引.js
import * as Wolfs from './path/to/dogs';
import * as Tigers from './path/to/cats';
export {
Wolfs,
Tigers
}
RequireJS的配置
require.config( {
...
'paths': {
'dogs-requireJS-moduleID' : './path/to/dogs',
'cats-requireJS-moduleID' : './path/to/cats',
'animals-webpack-bundle' : 'path/to/animals/bundle'
},
'map': {
'*': {
'dogs-requireJS-moduleID': 'animals-webpack-bundle',
'cats-requireJS-moduleID': 'animals-webpack-bundle'
}
});
从属模块
import * as JohnDogs from 'dogs-requireJS-moduleID'; //This now points to animals-webpack-bundle
JohnDogs.doStuff();
为了使Dependent模块工作,代码必须重写为JohnDogs.Wolfs.doStuff()
,因为Dogs是用别名Wolfs导出的。我的问题是是否有一些变通方法可以使代码工作而不必重写它。
希望你已经很好地解释了我的问题。提前感谢。
更新
以上只是用于解释的伪代码。在我的真实的场景中,有其他项目拥有自己的webpack.config
,它们依赖于我绑定的这个项目,但我无法访问它们。而且,这些项目共享我可以访问的相同RequireJS配置。
1条答案
按热度按时间jm81lzqq1#
你不需要requireJS来创建别名。你可以在webpack中这样做(把这个片段插入你的webpack.config.js文件中)
请注意,如果您使用的是Typescript,您还需要在tsconfig.json中写入别名:
然后,您可以导入如下所示的文件:
最后,别名应该指向一个入口点,比如
components
或assets
。不要像你的例子那样将它们指向特定的文件,否则你最终会有成千上万的条目,这是不可伸缩的。