3

我使用 node.js 开发 web 应用程序和网站

但是当我想将应用程序部署到某个 Pass 时,我必须自己手动优化应用程序

  • 将 Sass 编译为样式表

  • 将javascript文件和css文件合并在一起

  • 将它们复制到YUI压缩后,压缩后再复制回来

  • 等等

这个工作流程让我很不安,所以我的问题是,是否有一些工具或模块可以优化这个工作流程,或者自动完成这项工作

你的部署策略是什么?

4

2 回答 2

4

你需要的是一个构建工具。在 Java 中,ant 和 maven 是流行的选择。在 node.js 世界中,有大量的构建工具。我最熟悉的两个是 grunt 和 buildr(完全披露:我是 buildr 的维护者)。

这两种工具都归结为您编写一个配置文件,指定您的源文件/目录以及您希望对它们执行的操作,选项包括缩小、连接、Saas 或 Stylus 编译等。

https://github.com/gruntjs/grunt

https://github.com/balupton/buildr.npm

对于部署工作流程,我推荐以下步骤:

  1. 从源代码控制(Git 或 Subversion 或诸如此类)中清除您的网站或应用程序代码的签出。
  2. 运行 grunt 或 buildr 命令来编译所有网站资源。
  3. 将结果上传到您的 Web 服务器,然后重新启动 node.js 进程。很多方法可以做到这一点。

对于应用程序,我建议删除远程系统上的安装目录,并在其位置上 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 是包含构建和部署所需的所有命令、日志记录、配置等的脚本。

于 2013-03-02T16:45:59.030 回答
2

你真的应该看看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(我是维护者之一)。

于 2013-04-27T17:14:59.610 回答