Meteor 1.2在包之间共享文件

时间:2015-11-10 09:06:14

标签: meteor

Meteor 1.2中是否有办法在包之间共享文件?

我要做的是拥有/ private / bower_components / *文件夹,该文件夹由项目中的所有包共享。这实现了两件事:

  • 无需为每个包裹bower install
  • 如果包共享相同的库,则消除重复

我很感激有关如何实现上述2个目标的任何想法或建议。

我之前在Meteor 1.1中可以做的事情

在我的package.js文件中,我会:

api.addFiles([
    '../../private/bower_components/bootstrap/dist/js/bootstrap.min.js',
],'client');

但是,在Meteor 1.2中,这会产生错误Error: Path contains forbidden segment '..',如所讨论的here

备注

我特意使用凉亭和不是meteor包,因为我不想包含库中的所有文件。例如。对于bootstrap我使用自定义bootstrap.less文件,因此我只需要该库中的bootstrap.js文件。

困难之路

我能想到的其他唯一方法是:

  • 为每个库创建自定义meteor包并引用其他包中的那些。这意味着我必须维护每个依赖的包,这太可怕了。
  • 直接在meteor html模板的head部分引用文件。那意味着我需要在项目文件中引用包依赖项的文件,这将创建依赖项的蜘蛛网;这不太理想。

[编辑]以下详细说明

我简化了上面的问题以突出我的问题;但是,以下内容增加了我收到的回复的清晰度。

当前结构

private
  └ bower_components
      └ bootstrap
      └ jquery
      └ ...
packages
  └ boilerplate
      └ boilerplate.less
  └ ...

我将bower_components置于私有状态,以便所有文件不会自动捆绑到流星版本中,从而导致不必要的膨胀。

boilerplate.less

...
@bootstrap-root: "/private/bower_components/bootstrap";
@import "@{bootstrap-root}/less/mixins.less";
@import "@{bootstrap-root}/less/buttons.less";
...

这不会立即生效,因为根据最新的meteor less package documentation **我需要在package.js文件api.addFiles('x.less', 'client', {isImport: true})中专门为导入包含更少的文件,否则我会收到错误:

While processing files with less (for target web.browser):
packages/boilerplate/boilerplate.less:6: Unknown import:
/private/bower_components/bootstrap/less/buttons.less

...这导致我的问题,我需要能够做到这一点才能使它工作......

...
api.addFiles([
    '../../private/bower_components/bootstrap/less/buttons.less',
],'client',{isImport: true});
...

**是的,还有其他两种方法可以包含导入较少的文件,但我不想只是为了更改通过bower安装的文件来运行grunt以包含文件名中的import或将较少的文件分组为“导入“文件夹。正如我在Meteor 1.1中所说,这只是没有头疼的咕噜声 - 感觉就像流星在这里倒退。

1 个答案:

答案 0 :(得分:0)

经过一天以上的尝试,包括:

  • 使用gulp将文件从private目录中提取到应用程序项目根目录中,但却发现我仍然需要在包中导入它们。如果没有这个工作,我会尝试将它们放在imports目录中,如文档中所述,但也无效。
  • 未成功将bower_components移动到包目录中以在包中引用它们&希望通过package.js
  • 中的imply()公开它们
  • 开始使用api.addFiles('x.less', 'client', {isImport: true})导入较少文件以在我的包中使用的路径。在意识到我必须为超过50个文件执行此操作后放弃,因为少量导入引导程序等使用;并且我不知道每次我对bower包进行更新时这将会产生什么影响。
  • 使用导入文件夹,以便"仅导入"无需使用api.addFiles('x.less', 'client', {isImport: true})即可自动导入较少的文件。我无法按照文档中的描述使用它。

我偶然发现了以下链接:

这些链接以及我一直在努力工作的问题会让我相信Meteor 1.2还没有准备好开发,更不用说prod了。

出于这个原因,我决定降级回Meteor V1.1。希望我能在不久的将来再次重温这一点。