Twitter bootstrap 如何重新使用引导';meteor软件包中的变量更少

Twitter bootstrap 如何重新使用引导';meteor软件包中的变量更少,twitter-bootstrap,meteor,less,package-development,Twitter Bootstrap,Meteor,Less,Package Development,我正在制作一个包,为引导提供一些额外的ui组件。我选择依赖(很棒的)包来获得较少的引导库 我的软件包必须提供额外的LESS文件,这些文件需要一些无引导变量(比如@brand success)。最终用户完全可以定制这些变量 该软件包提供了一个文件(custom.bootstrap.import.less),其中包含引导变量,供用户在需要时使用。它也是用户需要自定义其引导的地方。所以我想在我的包的less文件中包含这个,但是我不知道,从我的包中,最终用户将把这个文件放在哪里 我可以假设给定的默认路径

我正在制作一个包,为引导提供一些额外的ui组件。我选择依赖(很棒的)包来获得较少的引导库

我的软件包必须提供额外的LESS文件,这些文件需要一些无引导变量(比如
@brand success
)。最终用户完全可以定制这些变量

该软件包提供了一个文件(
custom.bootstrap.import.less
),其中包含引导变量,供用户在需要时使用。它也是用户需要自定义其引导的地方。所以我想在我的包的less文件中包含这个,但是我不知道,从我的包中,最终用户将把这个文件放在哪里

我可以假设给定的默认路径在包文档中有一个示例(
/client/lib/custom.bootstrap.import.less
),但是如果另一个包编写器做出不同的选择,则包将不兼容


有没有办法不对最终用户强制实施特定的文件体系结构?

据我所知,编译bootstrap的CSS的软件包,如nemo64::bootstrap,仅因为metreor的默认较少编译器将较少的文件编译为单个CSS文件。除非Less文件的名称以下划线(\)开头,否则它将被编译

编译Bootstrap时,您应该只编译Bootstrap.less文件,所有其他文件都只是部分文件。只应导入部分,而不应在CSS文件中编译。Bootstrap的partials文件名不以下划线开头,因此可以使用诸如nemo64::Bootstrap之类的包来编译Bootstrap,并使您能够在以后更新Bootstrap

对于您的包,您可以自己包含无引导代码。您还应该内置Less编译器,并确保它只编译主文件。可在以下网址找到示例:

完成上述步骤后,主less文件可以包含:

@import "bootstrap";
@import "overrides";

等等

一个解决方案是将较少的文件导出为服务器上的资产,并具有一个构建插件,该插件将在应用程序中复制该文件,以便用户可以在需要时导入它


这样做的方式与DIT相同,即将包拆分为两个不同的包。我在这篇文章中解释了所有的事情,但我不完全确定如何进行。但是您可以首先注册一个与变量文件具有相同扩展名的句柄。这就是我的意思:

var handler = function (compileStep, isLiterate) {
  // This will get the file path from the handler
  var variablesFilePath = compileStep._fullInputPath;
  console.log(variablesFilePath); // print the path to the server when starting
}
// handler may also be a callback
Plugin.registerSourceHandler('bootstrap.import.less', {archMatching: 'web'}, handler);
这将创建一个处理程序,您可以从中使用插件API。有关更多信息,请参阅


让我知道这是如何工作的。

我自己不想包含boostrap-less代码,因为最终用户可能已经定制了boostrap-less。也许我从你的回答中漏掉了什么。但是谢谢你的评论,因为你的评论让我找到了另一个解决方案(见我的答案)。如果定制意味着应该允许最终用户更改引导程序的Less变量,那么你应该注意Less使用延迟加载,并且变量的最后声明获胜。因此,您可以通过将每个变量的定义放在后面来覆盖它。另见