当你创建一个ember-cli插件时,你应该能够运行一个虚拟的应用程序。
如果组件需要访问其供应商文件夹,您可以在生产环境中访问"public/“。在开发使用您访问的插件的ember应用程序时:
app.options.project.nodeModulesPath + "/"+ this.name+"/vendor/"
但是,当您运行ember cli addon服务器(虚拟应用程序)时,您只需要"vendor/“即可。
在开发插件或使用插件的应用程序时,this.getEnv()将返回developpement。
如何在index.js中区分app dev和addon dev?
发布于 2018-08-31 06:59:55
假设我们在included钩子中,您可以检查this.isAddon()来确定您现在所处的位置。比方说,如果你现在在消费者ember应用程序中,那么你可以调用path.dirname(require.resolve('ADDON_NAME/package.json'))来获得你的ember附加组件的绝对路径。
需要注意的一件事是,this.isAddon()可能不是公共API (尽管它足够稳定,但仍然没有在API文档中列出)。如果你担心这一点,你可以使用this.parent.name()来实现同样的目标,当你使用虚拟应用程序运行时,this.parent.name()总是返回dummy。
顺便说一句,this.parent和app.project是一样的,app是included钩子的第一个参数。
https://stackoverflow.com/questions/52101859
复制相似问题