创建ember-cli插件时,应该能够运行虚拟应用程序。
如果组件需要访问其供应商文件夹,则可以在生产环境中访问“ public /”。 在开发使用插件的余烬应用程序时,您可以访问:
app.options.project.nodeModulesPath + "/"+ this.name+"/vendor/"
但是,当您运行ember-cli附加服务器(虚拟应用程序)时,您仅需要“ vendor /”。
this.getEnv()
将在开发插件或使用插件的应用程序时返回developpement
。
如何在index.js
中区分app开发与addon开发?
答案 0 :(得分:2)
假设我们在included
钩中,则可以检查this.isAddon()
以确定您现在的位置。假设您现在处于消费者余烬应用程序中,则可以调用path.dirname(require.resolve('ADDON_NAME/package.json'))
来获取余烬插件的绝对路径。
需要注意的一点是,this.isAddon()
可能不是公共API(尽管足够稳定,但仍未在API文档中列出)。如果您对此有所担心,则可以使用this.parent.name()
来达到相同的目标,当您与虚拟应用程序一起运行时,this.parent.name()
总是返回dummy
。
顺便说一句,this.parent
与app.project
是同一件事,其中app
是included
钩子的第一个参数。