只使用connect-assets、grunt-ember-templates和 Gruntfile就可以构建一个非常方便的系统。首先,我们需要在 Gruntfile.coffee 中添加如下配置:
grunt.initConfig
watch:
ember_templates:
files: 'assets/templates/**/*.hbr'
tasks: 'ember_templates'
ember_templates:
compile:
options:
templateName: (sourceFile) ->
sourceFile.replace(/assets\/templates\//, '').replace(/\.hbr$/, '')
files:
'assets/js/templates.js': 'assets/templates/**/*.hbr'
# Plugins.
grunt.loadNpmTasks('grunt-contrib-watch')
grunt.loadNpmTasks('grunt-ember-templates')
# Default task.
grunt.registerTask('default', ['ember_templates'])
然后,在我们的 Express.js 服务器配置中:
app.use require("connect-assets")()
在我们的 index.html 文件中,我们需要在适当的地方添加两行。这些需要通过我们选择的 Node.js 模板引擎进行处理:
<%- css("application") %>
<%- js("application") %>
然后我们需要创建 assets/css/application.styl(可以使用 @import 指令)和 assets/js/application.coffee(可以使用“#= require foo”注释)。
要使用这个系统,首先运行:
grunt
要使 template.js 文件永久保持最新,请运行:
grunt watch
对于其他所有内容,请参阅connect-assets 文档。请注意,我使用 Stylus 比使用 Less 更幸运,这在撰写本文时似乎存在连接资产的问题。
其他快速成熟的工具
自从我写了这个答案以来,我遇到了其他几个以各种方式处理资产编译的好选择: