【发布时间】:2015-07-31 14:39:23
【问题描述】:
我将grunt-usemin 与grunt-rev 结合使用,将对非优化脚本的引用替换为单个连接的引用,并在每次构建时添加修订。
需要这个:
<!-- build:js({.tmp,app}) scripts/main.js -->
<script src="scripts/custom_script1.js"></script>
<script src="scripts/custom_script2.js"></script>
<script src="scripts/models/custom_model.js"></script>
<!-- endbuild -->
在grunt build 之后,输出:
<script src="scripts/b7197f7b.main.js"></script>
这是我的问题:
我需要构建输出 src 不与项目目录相关,而是指向外部 URL,因为我的脚本将托管在 CDN 上。
// build should produce THIS instead:
<script src="www.my-cdn-url.com/scripts/b7197f7b.main.js"></script>
我尝试在 usemin 任务中使用 blockReplacement 配置对象来做到这一点:
// this is what I've tried (note the blockReplacement):
usemin: {
html: ['<%= yeoman.dist %>/{,*/}*.html'],
css: ['<%= yeoman.dist %>/styles/{,*/}*.css'],
options: {
dirs: ['<%= yeoman.dist %>'],
blockReplacements: {
js: function (block) {
return '<script type="text/javascript" src="www.my-cdn-url.com/scripts/'+block.dest+'"></script>';
}
}
}
},
而且,虽然这适用于将 src 属性更改为指向我的 CDN,但 没有应用修订号。
我的问题:如何将我的 usemin 构建指向外部端点,同时保持构建期间创建的修订号?
作为参考,这里是我完整的 usemin 和 rev 任务(取自 yeoman 主干样板):
usemin: {
html: ['<%= yeoman.dist %>/{,*/}*.html'],
css: ['<%= yeoman.dist %>/styles/{,*/}*.css'],
options: {
dirs: ['<%= yeoman.dist %>'],
blockReplacements: {
js: function (block) {
return '<script type="text/javascript" src="www.my-cdn-url.com/scripts/'+block.dest+'"></script>';
},
css: function(block) {
return '<link rel="stylesheet" href="www.my-cdn-url.com/styles/'+block.dest+'">';
}
}
}
},
rev: {
dist: {
files: {
src: [
'<%= yeoman.dist %>/scripts/{,*/}*.js',
'<%= yeoman.dist %>/styles/{,*/}*.css',
'<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp}',
'/styles/fonts/{,*/}*.*',
]
}
}
}
【问题讨论】:
标签: javascript gruntjs grunt-usemin