如何在node.js中向LESS添加函数

时间:2014-06-21 10:03:44

标签: node.js less extend middleware user-defined

我曾经使用less-middleware,但由于我需要添加自定义函数/常量,因此切换到less。我假设less-middleware在幕后使用less

定义我使用的常量:

function lessDefine(name, value) {
  less.tree.functions[name] = function () {
    return new (less.tree.Anonymous)(value);
  };
}

并创建一个常量:

lessDefine('backgroundImage', config.backgroundImage);

然后链接到Express:

router.use('/stylesheets',
  less.middleware(
    lessOpts.source, lessOpts.main,
    lessOpts.parser, lessOpts.compiler));

这是在浏览错误报告,功能请求和Google结果之后,因为扩展LESS的能力没有很好地记录。这在上周有效,但现在我看到了:

TypeError: Object #<Object> has no method 'middleware'

当我尝试启动我的节点应用时。

在Node.js中向LESS添加函数/常量的“正确”方法是什么?

请注意,我使用:

var less = require('less');
var lessMiddleware = require('less-middleware');

我的package.json使用以下版本限制:

less-middleware: 1.0.3
less: 1.7.x

1 个答案:

答案 0 :(得分:0)

less.middlewareless-middleware模块添加。

Monkeypatching因为某种原因而不受欢迎; less-middleware在其文件夹中安装了自己的less模块(按照npm),而我的应用使用了less的单独实例。

因此,less.middleware未在我的应用看到的less实例中设置。在调用npm dedupe之后,整合了重复的实例,我的应用程序现在正常运行。