Stylus 导入
当使用 @import 没有 .css 扩展,会被认为是 Stylus 片段(如:@import "mixins/border-radius")。
@import 工作原理为:遍历目录队列,并检查任意目录中是否有该文件(类似node的require.paths)。该队列默认为单一路径,从filename选项的dirname衍生而来。 因此,如果你的文件名是 /tmp/testing/stylus/main.styl,导入将显现为 /tmp/testing/stylus/。
@import 也支持索引形式。这意味着当你 @import blueprint, 则会理解成 blueprint.styl 或 blueprint/index.styl. 对于库而言,这很有用,既可以展示所有特征与功能,同时又能导入特征子集。
如下很常见的库结构:
./tablet
|-- index.styl
|-- vendor.styl
|-- buttons.styl
|-- images.styl
下面这个例子中,我们设置 paths 选项用来为 Stylus 提供额外路径。在 ./test.styl 中,我们可以 @import "mixins/border-radius" 或 @import "border-radius"(因为./mixins 暴露给了Stylus)。
/**
* 依赖模块
*/
var stylus = require('../')
, str = require('fs').readFileSync(__dirname + '/test.styl', 'utf8');
var paths = [
__dirname
, __dirname + '/mixins'
];
stylus(str)
.set('filename', __dirname + '/test.styl')
.set('paths', paths)
.render(function(err, css){
if (err) throw err;
console.log(css);
});