有没有办法让Stylus使用src和destpath不包含“stylesheets”目录?

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

// ... 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”会自动添加(如原始示例中的注释所示)。 这似乎是不必要的,我想我想知道如果只有一种方法可以closures。

这是不可能的,从我从第128号拉请求中收集到的信息。 解决方法是嵌套一个额外的目录来匹配由中间件生成的path,这似乎比问题本身更丑陋。

假设你的HTTP请求path是/css/file.css ,你的目录结构应该是这样的:

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

你的中间件configuration应该是这样的:

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

(我没有试过这个,但是要指出中间件的期望。)

你有没有尝试过:

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

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

这应该作为手写笔文件相对path(到src目录)不再包含样式表。 本身没有附加物。

我面临着同样的问题。 我用src作为函数..例如:你的http请求path是

 GET /css/style.css 

然后replace/css并findstylesheets文件夹。

 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/

要么

__dirname + '/views/stylesheets'下创build一个文件夹css__dirname + '/views/stylesheets' *.styl文件移动到其中

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