asg*_*oth 11 build-automation node.js npm gruntjs pug
对于我正在处理的单页应用程序,我有以下结构:
Express服务器将使用目录dist来为项目提供服务.我有一些琐碎的grunt任务(使用grunt-contrib-clean,grunt-contrib-copy)来清理dist并将src/css,src/js,src/lib复制到dist.
问题在于src/views.该目录包含需要编译为html文件的jade文件.在编译之后我想在dist中使用它们(dist根中的index.html,partials作为subdir).
目前我正在使用grunt-contrib-jade任务来编译和复制jade文件.我想将它们复制到dist,因为我不想将已编译的html文件添加到源代码控制中.但是现在这不是真的可行,因为你必须指定每个jade文件(现在只有少数,但会增长):
jade: {
compile: {
options: {
pretty: true
},
files: {
// TODO make one line
'dist/index.html': ['src/views/index.jade'],
'dist/partials/banner.html': ['src/views/partials/banner.jade'],
'dist/partials/dashboard.html': ['src/views/partials/dashboard.jade'],
'dist/partials/navbar.html': ['src/views/partials/navbar.jade'],
'dist/partials/transfer.html': ['src/views/partials/transfer.jade']
}
}
},
Run Code Online (Sandbox Code Playgroud)
有没有办法使用grunt-contrib-jade任务(或另一个)与目录过滤器?像这样:
jade: {
compile: {
options: {
pretty: true
},
dir: {
'dist': ['src/views']
}
}
}
Run Code Online (Sandbox Code Playgroud)
And*_*eyM 20
来自Grunt wiki的一点澄清- 扩展映射:
grunt.file.expandMapping(patterns, dest [, options])
Run Code Online (Sandbox Code Playgroud)
请注意,虽然此方法可用于以编程方式为多任务生成文件数组,但首选" 配置任务指南 "中"动态构建文件对象"部分中描述的执行此操作的声明性语法.
假设如上所述,配置将如下所示:
files: [ {
expand: true,
src: "**/*.jade",
dest: "dist/",
cwd: "src/views",
ext: '.html'
} ];
Run Code Online (Sandbox Code Playgroud)
与声明性配置相同的结果.
asg*_*oth 10
我最终升级到grunt 0.4(这导致了一些其他问题,但我能够处理).
使用grunt版本0.4,可以使用grunt.file.expandMapping:
jade: {
compile: {
options: {
pretty: true
},
files: grunt.file.expandMapping(['**/*.jade'], 'dist/', {
cwd: 'src/views',
rename: function(destBase, destPath) {
return destBase + destPath.replace(/\.jade$/, '.html');
}
})
}
},
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10463 次 |
| 最近记录: |