我想发布一个JS库,让任何人都可以为这个库开发插件。 例如,这是我发布的库:
// awesome-lib.js
export class Library {
registerPlugin(plugin) {
...
}
}
export class PluginBase {
...
}
其他开发者实施的插件:
// third-party-plugin.js
import {PluginBase} from './awesome-lib';
export default MyPlugin extends PluginBase {
...
}
最终用户的代码是这样的:
import {Library} from './awesome-lib';
import MyPlugin from './third-party-plugin';
const lib = new Library();
lib.registerPlugin(new MyPlugin());
但是,最终用户需要在同一目录中部署awesome-lib.js
和third-party-plugin
,因为后者从{{1}导入PluginBase
在同一目录中。
在Node.js中,这种插件很容易,因为它的模块发现是由npm管理的。但是在浏览器中,事情变得困难,因为它的模块发现只依赖于相对/绝对路径。
有没有解决方案?