我使用 node.js 开发 web 应用程序和网站
但是当我想将应用程序部署到某个 Pass 时,我必须自己手动优化应用程序
像
将 Sass 编译为样式表
将javascript文件和css文件合并在一起
将它们复制到YUI压缩后,压缩后再复制回来
等等
这个工作流程让我很不安,所以我的问题是,是否有一些工具或模块可以优化这个工作流程,或者自动完成这项工作
你的部署策略是什么?
我使用 node.js 开发 web 应用程序和网站
但是当我想将应用程序部署到某个 Pass 时,我必须自己手动优化应用程序
像
将 Sass 编译为样式表
将javascript文件和css文件合并在一起
将它们复制到YUI压缩后,压缩后再复制回来
等等
这个工作流程让我很不安,所以我的问题是,是否有一些工具或模块可以优化这个工作流程,或者自动完成这项工作
你的部署策略是什么?
你需要的是一个构建工具。在 Java 中,ant 和 maven 是流行的选择。在 node.js 世界中,有大量的构建工具。我最熟悉的两个是 grunt 和 buildr(完全披露:我是 buildr 的维护者)。
这两种工具都归结为您编写一个配置文件,指定您的源文件/目录以及您希望对它们执行的操作,选项包括缩小、连接、Saas 或 Stylus 编译等。
https://github.com/gruntjs/grunt
https://github.com/balupton/buildr.npm
对于部署工作流程,我推荐以下步骤:
对于应用程序,我建议删除远程系统上的安装目录,并在其位置上 SCP'ing 新版本。这假设存在负载平衡器。
根据您的应用程序,这可能很简单,可以使用 shell 脚本编写自己的脚本,或者您可以使用 capistrano 或fleet 之类的工具。
https://github.com/capistrano/capistrano
https://github.com/substack/fleet
对于一个简单的网站,我推荐一些查看文件差异的东西,比如 rsync。我将 rsync 用于我的个人网站,因为它只是静态内容,我不必担心依赖关系等。
所以发布可能会像
$ git clone git://github.com/whatever.git && (cd whatever && buildr && rsync -avz --delete -e ssh <remote server>:webroot)
或者对于一个应用程序,更自动化一点:
$ git clone git://github.com/whatever.git && (cd whatever && buildr && make upload)
对于主要应用程序:
$ buildApp && deployApp
buildApp 和 deployApp 是包含构建和部署所需的所有命令、日志记录、配置等的脚本。
你真的应该看看Grunt.js。
Brandon 的回答很好,但我只能猜测他对 Grunt 没有经验。Make现在对我来说只不过是一段遥远而痛苦的记忆。
Grunt 本身只是一个“任务运行器”,而所有繁重的工作都是由“插件”完成的,每个插件都为 Gruntfile 中的特定“任务”提供动力。所以有一个用于将 SASS 编译为 CSS的插件,一个用于 YUI doc的插件等等。您可以在 GitHub 社区和 Grunt.js 网站上找到数百个 Grunt 插件,网址为:http: //gruntjs.com/plugins。
此外,所有的“grunt-contrib-”插件都是由 Grunt.js 核心团队策划的,每个插件都专注于在特定的事情上做得非常好。有一个用于缩小 CSS 的插件,另一个用于丑化(缩小/模糊)JavaScript,一个用于连接文件,等等。甚至还有一个用于生成静态站点的插件,assemble(我是维护者之一)。