文件夹结构webapp /网站与grunt自动化

时间:2014-01-11 13:50:45

标签: web-applications web directory structure gruntjs

目前我想将我的工作流程从Makefile更改为Grunt以及观察者。我在www.domain.net上有一个开发服务器,在www.domain.nl上有一个生产服务器。我必须手动编译,更新dev-server上的代码并刷新Web浏览器。从dev-to prod-environment开始,我也在苦苦挣扎。我不得不更改文件路径,域和从dev-js文件更改为缩小的文件取消注释HTML中的分析代码和那种东西。这仍然是手工劳动,因此容易出现人为错误!

我想知道如何设置一个只生成开发CSS,JS,HTML的环境,并构建一个生产目录,其中包含缩小和连接的所有必要文件。稍后我只需要将目录中的文件夹/文件上传到生产服务器,并将所有这些手动作业从我这里拿走。

你们推荐什么或你的工作流程是什么?

1 个答案:

答案 0 :(得分:1)

这是相当通用的,但这是一个尝试。

您首先需要的是“构建系统”(或“任务管理器”)。这肯定可能是“制造”或“咕噜咕噜”。然后,您将编写一个gruntfile(或makefile)来描述生成包所需的每个步骤,并且您将在该文件中创建特定的“目标”,这将描述特定的选项/值,具体取决于您是否正在生成用于开发的包或生产(“domain.net”与“domain.nl”)。

假设你要和grunt一起去,你当然可以通过以下方式实现这一点:

grunt.initConfig({
  myConfig: grunt.file.readJSON('configurationFile.json')
});

然后:

grunt.config('mytask.dev': {
    options: '<%= myConfig.dev %>'
});

grunt.config('mytask.prod': {
    options: '<%= myConfig.prod %>'
});

和configurationFile.json可能如下所示:

{
   'dev': {'domain': 'domain.net'},
   'prod': {'domain': 'domain.com'}
}

通过这样的设置,您可以:

grunt myTask:dev

grunt myTask:prod

为特定环境生成包。 显然,您需要使用各种grunt插件来执行任何有用的操作,并使用您的选项值来替换源文件中的模板化值。

此时,至少可以通过运行单个构建命令自动生成可靠的包。

您绝对需要阅读grunt文档:http://gruntjs.com/getting-started

您可能需要的第二部分是CI服务器。 周围有很多 - 詹金斯(古老的),或者最近的Strider(http://stridercd.com/)。

安装和配置其中一个将自动化您的构建操作。也就是说,每次提交一些代码时,都会在CI服务器上触发构建,并且新的软件包(假设构建成功)可用。

还有,你肯定需要阅读关于CI的一些背景文档(比如http://en.wikipedia.org/wiki/Continuous_integration)然后弄脏其中一个。

无论哪种方式,从grunt开始,看看它去了哪里。

希望有所帮助。