有没有办法让Stylus使用不包含“stylesheets”目录的src和dest路径?

时间:2012-02-10 03:33:39

标签: node.js stylus

我最近开始使用Node和Stylus并遇到这个问题。我想将生成的css保存在/ public / css中,而不是/ public / stylesheets中,似乎Stylus配置选项不允许这样做。

// ... your middleware here
app.use(stylus.middleware({
    src: __dirname + '/views',     // .styl files are located in `views/stylesheets`      
    dest: __dirname + '/public',   // .styl resources are compiled `/stylesheets/*.css`     
    compile: function(str, path) {
        return stylus(str)
            .set('filename', path)
            .set('warn', true)
            .set('compress', true);
    }
}));

上述代码中的注释来自Stylus示例。对于src和dest属性,会自动附加“/ stylesheets”(因为原始示例中的注释意味着)。这似乎是不必要的,我想我想知道是否有办法将其关闭。

3 个答案:

答案 0 :(得分:1)

目前我无法从拉取请求#128收集到的内容。解决方法是嵌套一个额外的目录以匹配中间件生成的路径,这似乎比问题本身更难。

假设您的HTTP请求路径为/css/file.css,您的dir结构应如下所示:

/view/stylesheets/css/*.styl
/public/css/*.css

并且您的中间件配置应如下所示:

debug: true,   // Set this flag to see what the middleware is doing
src: __dirname + '/views/stylesheets',
dest: __dirname + '/public',

(我没试过这个,但重点是匹配中间件所期望的。)

答案 1 :(得分:0)

你试过了吗?

  src: __dirname + '/views/stylesheets',
  dest: __dirname + '/public/css',  

查看代码: https://github.com/LearnBoost/stylus/blob/master/lib/middleware.js

这应该适用于手写笔文件相对路径(到src目录)不再包含样式表。本身没有附加任何内容。

答案 2 :(得分:0)

我遇到过这样的问题。我使用src作为函数..例如:您的http请求路径是

GET /css/style.css

然后替换/css并找到stylesheets文件夹。

app.use(stylus.middleware({
   src: function( path ){
       // print it for debug
       console.log( path );
       return  require('path').join(
           __dirname + '/views/stylesheets',
           path.replace('/css' ,'').replace('.css', '.styl')
       );
   },
   dest:__dirname + '/public' ,
   debug: true,
   ...

它将在文件夹__dirname + '/public/css/

下生成css文件

css下创建一个文件夹__dirname + '/views/stylesheets'并将*.styl个文件移入其中

app.use(stylus.middleware({
   src: __dirname + '/views/stylesheets',
   dest:__dirname + '/public' ,
   debug: true,
   ...