必须暴露与插件英文名同名的入口类名插件必须暴露和插件英文名同名的类名,挂载在`window.PLUGIN`的特定全局命名空间下,插件英文名是唯一的,可以保证不与其他供应商的插件发生冲突。
参考代码如下所示:
window.PLUGIN.PluginClass = PluginClass; |
webpack自由变量
为了保证正确加载插件静态资源文件,推荐将插件平台传入的`assetPrefix`属性设置webpack自由变量,确保webpack加载图片、字体等资源模块的时候,`publicPath`是正确的,因为代码包最终是发布到插件平台的代码库中,由插件平台来加载,所以资源前缀是插件平台控制的,插件本身只需要使用相对路径`require`图片资源即可。关于webpack自由变量特性,请参考以下官方文档描述。参考代码如下所示:
function setWebpackFreeVariable(assetPrefix: string) { let publicPath = assetPrefix; if (!/\/$/.test(publicPath)) publicPath += '/'; __webpack_public_path__ = publicPath; } // 在插件入口类构造器中调用 class PluginClass { constructor(config: PluginConfig) { if (config.assetPrefix) { setWebpackFreeVariable(config.assetPrefix); } } } |