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文件。
困难之路
我能想到的其他唯一方法是:
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中所说,这只是没有头疼的咕噜声 - 感觉就像流星在这里倒退。
答案 0 :(得分:0)
经过一天以上的尝试,包括:
private
目录中提取到应用程序项目根目录中,但却发现我仍然需要在包中导入它们。如果没有这个工作,我会尝试将它们放在imports
目录中,如文档中所述,但也无效。api.addFiles('x.less', 'client', {isImport: true})
导入较少文件以在我的包中使用的路径。在意识到我必须为超过50个文件执行此操作后放弃,因为少量导入引导程序等使用;并且我不知道每次我对bower包进行更新时这将会产生什么影响。api.addFiles('x.less', 'client', {isImport: true})
即可自动导入较少的文件。我无法按照文档中的描述使用它。我偶然发现了以下链接:
这些链接以及我一直在努力工作的问题会让我相信Meteor 1.2还没有准备好开发,更不用说prod了。
出于这个原因,我决定降级回Meteor V1.1。希望我能在不久的将来再次重温这一点。