Ember-cli 插件开发,如何区分插件开发与应用程序开发



当你创建一个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.parentapp.project是一回事,其中appincluded钩子的第一个参数。

最新更新