0

我最初在尝试设置 Stylus 时非常沮丧,因为我会调整我的srcdest设置,重新启动 Node,刷新,并且 Stylus 没有编译。这是在类似的页面上http://localhost:3000/tasks。但是,srcanddest路径是正确的,当我重新启动 Node 并尝试加载索引页面时http://localhost:3000,Stylus 将正确编译。

所以现在我发现它可以正确编译,但只能从主页 URL,我想知道我是否设置了错误,因为在我从主页刷新之前,对 .styl 文件的任何更改都不会更新,而不是任何 GET 参数页面。

var express = require('express');
var app = express();
var stylus = require('stylus');

app.configure(function () {
    this.set("views", __dirname + "/views/jade");
    this.set("view engine", "jade");
    this.use(express.bodyParser());
    this.use(express.methodOverride());
    this.use(this.router);

    this.use(stylus.middleware({
        src: __dirname + '/views/styl', //styl files to be compiled
        dest: __dirname + '/public/css', //destination for compiled css
        compress: true
    }));

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

我描述的是正常过程吗,或者如果 Stylus 注意到.styl文件中的更改,无论您的 URL 是什么,都应该重新编译?

4

2 回答 2

1

我最终使用了默认的 Stylus 路径,这意味着在我的“views”和“public”目录中都使用了一个名为“stylesheets”的目录,以及以下代码:

    //Stylus
    this.use(stylus.middleware({
        src: __dirname + '/views', //styl files to be compiled
        dest: __dirname + '/public', //destination for compiled css
        compress: true
    }));

Stylus 然后在 /views/stylesheets 中查找 .styl 文件,并将它们编译到 /public/stylesheets。出于某种原因,试图更改目录的名称并喜欢我的路径给我带来了麻烦。从阅读一些论坛来看,目前这似乎不被认为是一个错误,但确实存在。

于 2012-11-13T17:09:00.963 回答
0

我没有 50 的声誉可发表评论,但您可以根据需要更改路径。首先需要path模块:

path = require('path')

然后根据您的口味解决:

path.resolve('./') //this will be resolved to where your node app resides
path.resolve('../') //this will go one directory up from the path of your node app file
path.resolve('../../')  //this will go two directories up from the path of your node app file

用于console.log()查看这些产品产生了什么。然后对于手写笔中的选项,只需将__dirname其更改为解析路径,而不是使用作为基础。所以假设你有一个目录结构:

$userPath/myApp/frontend/src/app.js
$userPath/myApp/frontend/src/public
$userPath/myApp/frontend/static/public

然后您可以:

var staticPath = path.resolve('../') + '/static'; //$userPath/myApp/frontend/static

app.use(
  stylus.middleware({
    src:  __dirname + '/public/',
    dest: staticPath + '/public/',
    debug: true,
    compile : function(str, path) {
      return stylus(str)
        .set('filename', path)
        .set('warn', true)
        .set('compress', true);
    }
  })
);
于 2014-11-05T02:56:41.363 回答