从Meteor包中公开Sass文件以进行Meteor App导入

时间:2014-09-09 14:03:15

标签: meteor sass

我正在为流星0.9+构建一个包,这个包暴露了一个名为'Bourbon'的sass mixins的库,并且我正在尝试找出从包中获取'@import'样式表的最佳方法。流星项目。

https://github.com/wolvesio/meteor-bourbon/

Pre Meteor 0.9过去常常通过以下方式完成: @import "packages/wolves:bourbon/bourbon";

由于包装系统已更改,但此操作不再有效。我们将非常感谢任何有关推进这项工作的最佳方式的帮助。

1 个答案:

答案 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文件)将解决此问题。