任务自动化(Task Automation)
概述
tasks/
目录包含了一系列 Grunt 任务和它们的组件设置。
任务主要是用在打包前端资源(如 stylesheets、scripts 及用户端标记模板),但它们也可以用在自动化重复各种开发时的琐事,从 browserify 编译到资料库迁移皆可使用。
为了方便起见,Sails 打包了一些默认任务,但随著数以百计的插件可供选择,你可以几乎毫不费力的使用任务自动完成任何事情。如果没有你需要的,你可以撰写并发布自己的 Grunt 插件到 npm!
如果你以前从未使用过 Grunt,一定要查看新手上路指南,因为它解释了如何建立 Gruntfile 以及安装和使用 Grunt 插件。
Asset pipeline
Asset pipeline 是让你组织要注入到检视的资源的地方,可以在 tasks/pipeline.js
文档找到它。设置这些资源很简单,使用 grunt 任务文档组件设置和匹配模式。它们被分为三个部分。
要注入的 CSS 文档
这是一个 css 文档阵列,会注入到 html 的 <link>
标签。这些标签会放在所有检视的 <!--STYLES--><!--STYLES END-->
注解之间。
要注入的 Javascript 文档
这是一个 Javascript 文档阵列,会注入到 html 的 <script>
标签。这些标签会放在所有检视的 <!--SCRIPTS--><!--SCRIPTS END-->
注解之间。文档会依照在阵列中的顺序被注入(也就是你应该按照文档相依关系来调整注入的顺序)。
要注入的模板文档
这是一个 html 文档阵列,会编译成 jst 函数并放在一个 jst.js 文档。这些文档会注入到 <script>
标签,放在 html 的 <!--TEMPLATES--><!--TEMPLATES END-->
注解之间。
如果你想改变它们的话,相同的 grunt 匹配模式和任务文档组件设置也使用在一些任务组件设置文档自身。
任务组件设置(Task configuration)
每个已设置的任务都是一组规则,Gruntfile 会遵循此规则执行。他们位于 tasks/config/
目录且可完全自定义。你可以修改、忽略或取代任何一个 Grunt 任务,以满足你的需求。你也可以加入自己的 Grunt 任务,只需在此目录新增一个 someTask.js
文档来设置新的任务,然后用适当的父任务注册它(请查看 grunt/register/*.js
内的文档)。请记住,Sails 具备一套实用的默认任务,是为了让你在无需任何组件设置下执行。
设置自定义任务
设置一个自定义任务到你的工程非常简单,使用 Grunt 的设置和任务 APIs 允许你建立自己的任务模组。让我们实践一个建立新任务取代已存在任务的简单例子。比方说,我们希望 Handlebars 模板引擎来取代默认具备的 underscore 模板引擎:
- 第一步是在终端机使用以下指令安装 handlebars 的 grunt 插件:
npm install grunt-contrib-handlebars --save-dev
- 建立组件设置文档在
tasks/config/handlebars.js
。这是我们要放 handlebars 设置的地方。
```javascript // tasks/config/handlebars.js // -------------------------------- // handlebar 任务组件设置。
module.exports = function(grunt) {
// 我们使用 grunt.config api 的 set 方法来设置一个对象到定义的字串。 // 在这个例子中,'handlebars' 任