Heroku上的Node.js:在开发中使用中间件,但在生产中使用静态资产?

时间:2012-02-10 14:40:01

标签: node.js deployment heroku assets

某些中间语言(例如Stylus)提供了两种编译方式:通过connect中间件或通过CLI工具。后者可以生成静态编译资产(即.css文件)。

所以我想在开发模式上使用中间件,而在生产中使用静态资产。我知道我可以使用app.configure('developmen'...)来询问express(不)在开发模式下使用某些中间件。

在IaaS环境中,如Amazon EC2,我可以运行一个简单的shell脚本来自动重新编译我的所有资产。但是PaaS,特别是Heroku呢?如何判断.styl的位置以及应生成.css的位置?

2 个答案:

答案 0 :(得分:0)

您可以查看express-cdn,它会在服务器启动时将您的资源上传到S3。

我最终做的是注册CloudFlare,发现它没有使用CloudFront那么快,但它设置起来非常简单,而且比我的dyno提供资产文件效果更好。

答案 1 :(得分:0)

您可能需要查看https://github.com/adunkman/connect-assets。如果您传递build:true,它会缓存任何已构建的javascript或css文件(它具有针对手写笔的手写笔内置支持)。

如果您不感兴趣,可以忽略snockets(类似sprockets的javascript包含系统),尽管我喜欢使用它。 #= require_tree app并且包含该目录中的所有js文件。在开发过程中,您可以获得单独的脚本,以便于调试。

直接使用Heroku上的连接资产提供服务的最大缺点是,每次更新客户端代码时都需要git push to Heroku,这会自动触发重启。我最终手动构建我的资产(使用手写笔和snockets),然后上传到S3。如果您不需要经常更新客户端代码,那么这不是一个大问题。