stylus - 中间件不编译 `styl` 文件

stylus - middleware not compiling the `styl` file

我将 stylus 与中间件集成在一起。但是根本没有调用 compile 函数..

1) 如何使 compile 方法起作用

2) 如何更新 'tcp.css' 每次我更新 'tcp.styl` 文件已修改

这是我的代码:

var connect = require('connect'),
    serveStatic = require('serve-static'),
    stylus = require('stylus');

var app = connect();

app.use(stylus.middleware({
    src     : __dirname + '/app/css', //inside i have tcp.styl
    dest    : __dirname + '/app/css', //i require tcp.css
    force   : true,
    compile : function(str, path) {
        console.log('compiled'); //not called at all..
      return stylus(str, path)
        .set('filename', path) //file name i need to update as 'tcp.css'?
        .set('warn', true)
        .set('compress', true);
    }
}));

app.use(serveStatic("app"));
app.listen(5000, function () {console.log("HI", __dirname);}); //works!

文件结构:

我有一个示例,但在表达中,它可以满足您的要求。

根目录'app'及其文件

 app.js   index.jade  public

public/stylesheets 包含一个 .styl 文件

 public/stylesheets/tcp.styl

index.jade 正在连接已编译的 .css

link(rel="stylesheet", href="/stylesheets/tcp.css")

在 index.jade 中添加一个段落并在 tcp.styl 中设置样式,当您 运行 服务器时,您的文件将从 tcp.styl 自动编译 -> tcp.css。样式表文件夹将包含两个文件

tcp.styl  tcp.css

希望对您有所帮助。

App.js 文件看起来像这样

var express = require('express'),
    nib = require('nib'),
    stylus = require('stylus');

var app = express();

app.set('view engine', 'jade')
app.use(stylus.middleware({
    src: __dirname + '/public',
    compile: function compile(str, path) {
       return stylus(str)
       .set('filename', path)
       .use(nib())
    }
}));

app.use(express.static(__dirname + '/public'));

app.get('/', function (req, res) {
  res.render('../index');
});

app.listen(3000);
console.log('Server listening on port 3000');

我查看了您的应用程序结构。它与您的配置不匹配。您的文件位于 ./public/stylus/tcp.styl,但需要与您的 src 手写笔配置选项相匹配。使用此结构进行设置:

  • 将您的手写笔代码移至./public/css/tcp.styl
    • 将 .styl 和 .css 文件放在一起可以简化操作。
  • 触控笔中间件选项:src: __dirname + '/public'
    • 删除手写笔中间件dest。它将默认与 src 相同,一切都会更简单。
  • 要加载的 URI /css/tcp.css
  • 已编译 css 将在 ./public/css/tcp.css 中结束,在 stylus 中间件编译后由您的静态中间件提供服务。