Stylus和Express - 样式表在修改时不会重新编译

问题描述 投票:24回答:3

我在Mac OS X上运行最新版本的Node。我已经将Express与Stylus一起安装了。也是最新版本。

当我修改它们时,Stylus不会重新编译我的.styl文件。我怎样才能解决这个问题?

重新编译我的.styl文件的唯一解决方案是删除已编译的.css文件...重新启动我的应用程序,或者执行clear-cache-refresh(CMD + Shift + R)不会导致重新编译-compile。

这是我的应用程序配置的转储。它与使用可执行文件创建新的快速应用程序时基本相同...

app.configure(function ()
{
    this.set("views", __dirname + "/views");
    this.set("view engine", "jade");

    this.use(express.bodyParser());
    this.use(express.methodOverride());
    this.use(express.static(__dirname + '/public'));

    this.use(require("stylus").middleware({
        src: __dirname + "/public",
        compress: true
    }));

    this.use(this.router);
});

我的.styl和编译的.css文件都位于[application]\public\stylesheets\

node.js express stylus
3个回答
37
投票

static()放在手写笔中间件下面。


3
投票

现在已经太晚了,但我刚刚过了几个小时(T__T),我认为这是玉的一个错误或类似的东西。我将解释自己:在server.js中使用此代码:

app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(
  stylus.middleware({
    src:  __dirname + "/assets/stylus", 
    dest: __dirname + "/assets/css",
    debug: true,
    compile : function(str, path) {
      console.log('compiling');
      return stylus(str)
        .set('filename', path)
        .set('warn', true)
        .set('compress', true);
    }
  })
 );
app.use(express.static(__dirname + '/assets'));

并在index.jade中:

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

它完美地运作。问题是在链接标签中有:

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

然后它根本没有重新编译。

我希望这个能帮上忙


0
投票

默认设置Express.js

app.use(require('stylus').middleware(path.join(__dirname, 'public')));

Stylus压缩设置Express.js你必须在文件中添加样式表,编译页面加载并压缩css

app.use(require('stylus').middleware({src: path.join(__dirname, 'public'), compress: true}));
© www.soinside.com 2019 - 2024. All rights reserved.