是否可以创建私有或内部ember.js插件?

时间:2019-02-16 21:11:04

标签: ember.js

我的用例

我为一家使用Ember.js维护多个(例如7或8个)不同网站的公司工作。这些网站大多数在顶部都有几乎相同的导航栏。几乎没有什么变化是可以轻松输入的东西,就像它是组件或附件一样。为了增强代码的模块化,我认为将大多数导航条形码导入附件中并在我们所有站点中使用它真的很酷。

但是,这种方法的问题之一是我们的导航栏过于内部而无法将其发布为公共加载项(只有我的公司才需要使用它)。因此,我不想将其发布为公共附件。

这是Ember Addons的可能用例吗?如果是这样,我们怎么考虑实现这一目标。

4 个答案:

答案 0 :(得分:1)

我过去已成功使用以下方法:

  1. 创建您的插件
  2. 在全局node_modules文件夹(cd /your-addon-folder && npm link)中创建符号链接
  3. 转到网站项目并在其中创建符号链接(cd /your-homepage && npm link your-addon-package-name
  4. 使用您的插件

这是在您的计算机上本地发生的,您的加载项既不会发布到npmjs.com注册表也不会从npmjs.com注册表中使用。

为了安全起见,您可以在插件的private中使用package.json标志,也可以使其不被许可:

...
"private": true,
"license": "UNLICENSED",
...

答案 1 :(得分:1)

这是Yarn Workspaces的一个大用例。它们使您可以创建在工作空间中所有应用程序之间共享的本地程序包。这些在Ember.js中非常有用,Lenny Burdette在去年的Ember SF聚会上发表了talk about them。如果您要一起构建大量应用程序,那么这也是使依赖版本在应用程序之间保持同步的好方法。

答案 2 :(得分:1)

如果您的所有网站都在一个公共项目下,则可以考虑将导航或所有公共组件创建为in-repo-addon,以实现私有化并充当附加组件的目的。要创建一个re-repo-addon,可以使用以下命令

ember g in-repo-addon <private-addon-name>

# To create a component inside the addon, use:

ember g component <component-name> -ir <private-addon-name>

# Instead of '-ir', you could also use '--in-repo-addon'
# Also 'g' in the above commands = 'generate'

运行上述命令将创建一个lib/<private-addon-name>文件夹,您可以在其中使用组件,公用区等。

引用:https://ember-cli.com/extending/#in-repo-addons

答案 3 :(得分:1)

您可以发布到私人npm注册表。您可以使用npmjs orgs,但是可以使用多种软件(有些免费)来实现。