直到最近我才使用相当尴尬的无点。由于我使用的是 VS2010,所以我的使用受到一定限制,但是我遇到了 ServiceStack Bundler,它似乎工作得很好......除了一件事之外。
我的 Less 文件使用目录结构进行分割 - 为了简化事情,如下所示:
scaffolding/my-scaffolding.less
utilities/my-utilities.less
ui/my-ui.less
每个目录都有很多文件,特别是 mixins 等。
为了将它们链接在一起,我一直在使用 @import
函数。
我的主要 less 文件 - main.less 包含以下内容:
@import "utilities/all-utilities.less"
此处列出了所有实用程序,因为它使我能够即插即用各种文件集。这段代码以前工作正常。
但是我发现 ServiceStack 不会接受更改,除非我直接通过捆绑文件单独引用所有 less 文件,这有点痛苦。
因此,我无法使用:main.less
并导入所有子文件。
相反,我必须使用:
utilities/util1.less
utilities/util2.less
utilities/util3.less
等等。
我使用ms build函数来编译。
有什么想法吗?
/* 更新 */
尝试了下面推荐的答案,但没有成功。
这是我迄今为止尝试过的:
调用包含所有 @import 声明的单个 less 文件; 编译时不会触发更新。
从捆绑文件中调用所有 less 文件,并在必要时将 @import 语句添加到 less 文件中(注意,如果没有这些, bundler 将无法编译); 使用 @import 语句多次重复 @imported 代码 - 即使使用(引用)指令,也会导致代码臃肿/不正确。
最佳答案
您应该能够将 Bundler 的 bundler.js
文件修改为 specify additional paths在处理 @import
指令时应该搜索 less:
function compileLess(lessCss, lessPath, cb) {
var lessDir = path.dirname(lessPath),
fileName = path.basename(lessPath),
options = {
paths: ['.', lessDir], // Specify search paths for @import directives
filename: fileName
};
less.render(lessCss, options, function (err, css) {
if (err) throw err;
cb(css);
});
}
关于css - ServiceStack Bundler和子目录Less文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28482376/