当你创建一个ember-cli插件时,你应该能够运行一个虚拟的应用程序。
如果组件需要访问其供应商文件夹,则可以访问生产中的"public/"。 在开发使用插件的 ember 应用程序时,您可以访问:
app.options.project.nodeModulesPath + "/"+ this.name+"/vendor/"
但是,当您运行 ember-cli 插件服务器(虚拟应用程序(时,您只需要"vendor/"。
this.getEnv()
将在开发插件或使用插件的应用程序时返回developpement
。
index.js
,我如何区分应用程序开发和插件开发?
假设我们在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
钩子的第一个参数。