【发布时间】:2016-02-11 02:40:46
【问题描述】:
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
备注
我专门使用 bower 而不是流星包,因为我不想包含库中的所有文件。例如。对于 bootstrap,我使用自定义 bootstrap.less 文件,因此我只需要该库中的 bootstrap.js 文件。
艰难的道路
我能想到的唯一其他方法是:
- 为每个库创建一个自定义的流星包,并从其他包中引用这些包。这意味着我必须为每个依赖项维护一个包,这太可怕了。
- 直接在我的流星 html 模板的
head部分引用文件。这意味着我需要在项目文件中引用包依赖项的文件,这将创建一个依赖关系蜘蛛网;这并不理想。
[EDIT]下面的详细解释
我简化了上面的问题以突出我的问题;但是,以下内容使我收到的回复更加清晰。
当前结构
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";
...
这不会立即起作用,因为根据最新的流星 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});
...
** 是的,还有 2 种其他方法可以导入更少的文件,但我不想运行 grunt 只是为了更改通过 bower 安装的文件以在文件名中包含导入或将更少的文件分组为“进口”文件夹。正如我在 Meteor 1.1 中所说的那样,这只是在没有咕噜声的情况下工作 - 感觉就像 Meteor 在这里倒退了。
【问题讨论】:
-
如何创建一个导出所需符号的基础包并将其添加为依赖项?
-
@MasterAM 不幸的是,需要导入的不仅仅是 js 文件;虽然那是我给出的例子。它包括您可能在 bower 包中找到的任何文件(js、css、less 等)
-
但是这些应该包含在构建步骤中并捆绑在一起。需要
less包的包需要编译less文件,捆绑css(不影响JS),JS文件在需要包之前加载,导出的符号可用于它。使用这种方法时你缺少什么? -
@MasterAM 也许你可以多解释一下你的建议,拜托。我已经更详细地更新了我的问题......目前,我将 bower_components 放在私有文件夹中并直接从那里引用它们,以便只有我需要的内容被加载到包中。要么添加不必要的复杂性以仅包含选定的文件(与流星一起咕噜咕噜 - 呸),要么添加所有文件会创建一个非常大的臃肿包。在 1.1 中它刚刚工作:(
-
我的建议几乎是多包之一(困难方式#1)。我知道这很烦人,但是根据包目录之外的相对路径中可用的文件,在流星包可分发性的上下文中并不是很有用。您是否尝试过符号链接?
标签: meteor