我最近开始使用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”(因为原始示例中的注释意味着)。这似乎是不必要的,我想我想知道是否有办法将其关闭。
答案 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
下创建一个文件夹__dirname + '/views/stylesheets'
并将*.styl
个文件移入其中
app.use(stylus.middleware({
src: __dirname + '/views/stylesheets',
dest:__dirname + '/public' ,
debug: true,
...