我正在为流星0.9+构建一个包,这个包暴露了一个名为'Bourbon'的sass mixins的库,并且我正在尝试找出从包中获取'@import'样式表的最佳方法。流星项目。
https://github.com/wolvesio/meteor-bourbon/
Pre Meteor 0.9过去常常通过以下方式完成:
@import "packages/wolves:bourbon/bourbon";
由于包装系统已更改,但此操作不再有效。我们将非常感谢任何有关推进这项工作的最佳方式的帮助。
答案 0 :(得分:3)
我已经设法完成了你想要的东西,它有点hacky但它终于有效了。
首先,您需要在程序包中添加.less
个文件作为服务器资产:
Package.onUse(function(api){
api.addFiles([
"bourbon/style1.less",
...
"bourbon/styleN.less"
],"server",{
isAsset:true
});
});
然后运行meteor
以触发应用程序的构建:这将通过服务器资产复制到应用程序的.meteor
目录。更准确地说,您的.less
文件现在将位于".meteor/local/build/programs/server/assets/packages/wolves:bourbon/bourbon/*"
。
现在,您可以使用此超级不友好的路径在应用程序中引用这些.less
文件。
我建议通过直接在包中定义import.less来隐藏包用户中的这些内容:
packages/wolves:bourbon/bourbon.import.less
@bourbon-root: ".meteor/local/build/programs/server/assets/packages/wolves:bourbon/bourbon/";
@import "@{bourbon-root}style1.less";
//
@import "@{bourbon-root}styleN.less";
然后在README包中,邀请您的用户只需将bourbon.import.less复制到他们的客户端目录中并从那里引用它。
client/lib/config/style.less
@import "bourbon.import.less";
这种方法有一个缺点,我目前无法解决:.less
文件在构建应用程序时被复制到.meteor
目录中(触发时发生的过程{ {1}})。
但是,在将服务器资产(在本例中为我们的包meteor run
文件)复制到.less
目录之前,构建过程将首先尝试编译应用程序.less
文件。 / p>
因此,当您第一次将软件包添加到应用程序时,它会抱怨它无法找到软件包.meteor
文件,从而触发重建(通过查杀和重新启动.less
或{ {1}}您的应用程序meteor
文件)将解决此问题。