如何使用手写笔.define() 一种颜色

how to .define() a color with stylus

我尝试使用手写笔定义颜色 API .define(name, value):

var stylus = require('stylus');
stylus('.foo { color: darken(mycolor, 50%) }')
.define('mycolor', '#123')
.render(function(err, css) {
    console.log(err);
    console.log(css);
});

错误:

TypeError: expected rgba or hsla, but got string:'#123'

documentation 中,我看不到任何对 color 类型的引用。

.define('mycolor', '#123') 总是定义一个字符串,您可能已经发现了。即使你说.define('mycolor', 'rgba(0,0,0,0)'),你也会得到同样的错误。

你需要做的是定义一个rgbahsla节点,你可以这样做:

stylus('.foo { color: darken(mycolor, 50%) }')
.define('mycolor', new stylus.nodes.RGBA(1, 0x11, 0x22, 0x33))

遗憾的是,我一直无法找到直接从颜色字符串定义颜色节点的简单方法。

不过,

new stylus.Parser('#123').lexer.color().valnew stylus.Parser('#123').peek().val 将适用于十六进制字符串。