我使用node.js开发网络应用和网站
但是当我想将应用程序部署到某个Pass时,我必须自己手动优化应用程序
喜欢
将Sass编译为样式表
将javascript文件合并在一起并将css文件合并在一起
将它们复制到YUI压缩后,压缩后再将它们复制回来
依此类推
这个工作流程让我感到不安,所以我的问题是,是否有一些工具或模块可以优化这个工作流程,或者自动完成这项工作
你的部署策略是什么?
答案 0 :(得分:4)
您需要的是构建工具。在Java中,ant和maven是受欢迎的选择。在node.js世界中,有大量的构建工具。我最熟悉的两个是grunt和buildr(完全披露:我是buildr的维护者)。
任何一个工具都归结为您编写一个配置文件,指定您的源文件/目录以及您希望对它们执行的操作,选项是缩小,连接,Saas或Stylus编译等。
https://github.com/gruntjs/grunt
https://github.com/balupton/buildr.npm
对于部署工作流程,我建议执行以下步骤:
对于某个应用程序,我建议删除远程系统上的安装目录,然后将新版本放在SCP的位置。这假定存在负载均衡器。
根据您的应用程序,这可能很简单,可以使用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是包含构建和部署所需的所有命令,日志记录,配置等的脚本。
答案 1 :(得分:2)
你应该看看Grunt.js。
布兰登的答案很好,但我只能猜测他没有Grunt的经验。现在让我成为一个遥远而痛苦的回忆。
Grunt本身只是一个“任务运行者”,而所有繁重的工作都是通过“插件”完成的,每个插件都为Gruntfile中的特定“任务”提供动力。所以有plugin for compiling SASS to CSS,plugin for YUI doc等等。你可以在GitHub社区和Grunt.js网站上找到数百个Grunt插件,在这里:http://gruntjs.com/plugins。
此外,所有“grunt-contrib-”插件都是由Grunt.js核心团队策划的,每个插件都专注于在特定的事情上做得非常出色。有一个用于缩小CSS的插件,另一个用于uglifying(缩小/隐藏)JavaScripts的插件,一个用于连接文件的插件,等等。甚至还有一个用于生成静态站点的插件,assemble(我是其中一个维护者)。