如何在CoffeeScript中使Stylus与Express和Connect配合工作

9
我的app.coffee看起来是这样的:
connect = require 'connect'
express = require 'express'
jade = require 'jade'
stylus = require 'stylus'

app = express.createServer()

# CONFIGURATION

app.configure(() ->
  app.set 'view engine', 'jade'
  app.set 'views', "#{__dirname}/views"

  app.use connect.bodyParser()
  app.use connect.static(__dirname + '/public')
  app.use express.cookieParser()
  app.use express.session({secret : "shhhhhhhhhhhhhh!"})
  app.use express.logger()
  app.use express.methodOverride()
  app.use app.router

  app.use stylus.middleware({
    force: true
    src: "#{__dirname}/views"
    dest: "#{__dirname}/public/css"
    compress: true
  })
)

# ROUTES

app.get '/', (req, res) ->
  res.render 'index',
    locals:
      title: 'Title'

# SERVER

app.listen(1234)
console.log "Express server listening on port #{app.address().port}"

更新:我根本不知道怎么写CSS文件。
2个回答

4
找到了答案,已添加:
compile = (str, path, fn) ->
  stylus(str).set('filename', path).set('compress', true)

另外,显然将 stylus.middleware 代码移动到 connect.public 之上是一个不错的选择。 - Alfred
3
你把那加在哪里了? - Scott Tesler
我同意@ScottDavidTesler的观点,这个答案不完整。 - jcollum

3
当然,您可以提供自己的编译函数,但这样会不必要地覆盖默认函数。相反,通过在中间件调用中添加调试选项来检查出错的位置:
  app.use stylus.middleware
    debug: true
    force: true
    src: "#{__dirname}/../public"
    dest: "#{__dirname}/../public"

对我来说,问题是设置了错误的src/dest路径。你确定你的.styl文件确实位于你的views文件夹中吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接