无法用 grunt-usemin 自定义块替换替换 HTML 基本标签
cant replace HTML base tag with grunt-usemin's custom blockReplacements
我正在尝试用 /mydir/ 替换 HTML 基本标签的 href 属性值。已尝试使用 grunt-usemin 的 blockReplacements。
这里是配置
// Reads HTML for usemin blocks to enable smart builds that automatically
// concat, minify and revision files. Creates configurations in memory so
// additional tasks can operate on them
useminPrepare: {
html: ['<%= yeoman.client %>/index.html'],
options: {
dest: '<%= yeoman.dist %>/public'
}
},
// Performs rewrites based on rev and the useminPrepare configuration
usemin: {
html: ['<%= yeoman.dist %>/public/{,*/}*.html'],
css: ['<%= yeoman.dist %>/public/{,*/}*.css'],
js: ['<%= yeoman.dist %>/public/{,*/}*.js'],
options: {
assetsDirs: [
'<%= yeoman.dist %>/public',
'<%= yeoman.dist %>/public/assets/images'
],
blockReplacements: {
baseUrl: function (block) {
grunt.log.debug("******************* blockReplacements *******************");
return '<base href="/mydir/">';
}
},
// This is so we update image references in our ng-templates
patterns: {
js: [
[/(assets\/images\/.*?\.(?:gif|jpeg|jpg|png|webp|svg))/gm, 'Update the JS to reference our revved images']
]
}
}
}
我的 html 正在调用 usemin:
<!-- build:baseUrl /mydir/ -->
<base href="/">
<!-- endbuild -->
我是运行:
$ grunt serve:dist
但这只是去掉了base标签,并没有替换。
我怀疑我需要在 Gruntfile 中配置一个 baseUrl 属性,但我没有尝试 rev/uglify 文件并且相信这个属性会指向需要修改等的文件
我也尝试过 运行 调试以触发 grunt.log.debug 调用 buildReplace 函数:
$ grunt --debug serve:dist
但是没有控制台输出。
注意:我的应用程序基于 angular 全栈生成器应用程序。
https://github.com/angular-fullstack/generator-angular-fullstack
感谢任何帮助或建议。
你必须使用这个命令:
咕噜构建
不知从何而来,好久没有回过这个问题了。刚刚重新访问过,似乎从 grunt-usemin": "~2.1.1" 升级到 grunt-usemin": "3.0.0" 解决了这个问题。仍然不确定是否解决了特定错误以在 3.0.0
中修复此问题
另请注意:Gruntfile 中的 baseUrl 被分配了一个函数,第一个参数是块:
baseUrl: function (block) {
grunt.log.debug("******************* blockReplacements *******************");
return '<base href="/mydir/">';
}
这个名为 block 的参数实际上并没有在函数中使用,href return 是一个字符串(我知道这很糟糕,不应该这样使用,但只是在这里指出一些事情)。在client/index.html中调用这个函数必须有一个参数传递给它:
<!-- build:baseUrl /mydir/ -->
<base href="/">
<!-- endbuild -->
如果您删除 /mydir/ url 部分,则以下内容将无法创建基本标签:
<!-- build:baseUrl -->
<base href="/">
<!-- endbuild -->
所以实际上我们可以添加 /some-rubbish-url-portion/ 并且它不会失败并且不会对基本标签的结果产生任何影响。
我正在尝试用 /mydir/ 替换 HTML 基本标签的 href 属性值。已尝试使用 grunt-usemin 的 blockReplacements。
这里是配置
// Reads HTML for usemin blocks to enable smart builds that automatically
// concat, minify and revision files. Creates configurations in memory so
// additional tasks can operate on them
useminPrepare: {
html: ['<%= yeoman.client %>/index.html'],
options: {
dest: '<%= yeoman.dist %>/public'
}
},
// Performs rewrites based on rev and the useminPrepare configuration
usemin: {
html: ['<%= yeoman.dist %>/public/{,*/}*.html'],
css: ['<%= yeoman.dist %>/public/{,*/}*.css'],
js: ['<%= yeoman.dist %>/public/{,*/}*.js'],
options: {
assetsDirs: [
'<%= yeoman.dist %>/public',
'<%= yeoman.dist %>/public/assets/images'
],
blockReplacements: {
baseUrl: function (block) {
grunt.log.debug("******************* blockReplacements *******************");
return '<base href="/mydir/">';
}
},
// This is so we update image references in our ng-templates
patterns: {
js: [
[/(assets\/images\/.*?\.(?:gif|jpeg|jpg|png|webp|svg))/gm, 'Update the JS to reference our revved images']
]
}
}
}
我的 html 正在调用 usemin:
<!-- build:baseUrl /mydir/ -->
<base href="/">
<!-- endbuild -->
我是运行:
$ grunt serve:dist
但这只是去掉了base标签,并没有替换。 我怀疑我需要在 Gruntfile 中配置一个 baseUrl 属性,但我没有尝试 rev/uglify 文件并且相信这个属性会指向需要修改等的文件
我也尝试过 运行 调试以触发 grunt.log.debug 调用 buildReplace 函数:
$ grunt --debug serve:dist
但是没有控制台输出。
注意:我的应用程序基于 angular 全栈生成器应用程序。 https://github.com/angular-fullstack/generator-angular-fullstack
感谢任何帮助或建议。
你必须使用这个命令: 咕噜构建
不知从何而来,好久没有回过这个问题了。刚刚重新访问过,似乎从 grunt-usemin": "~2.1.1" 升级到 grunt-usemin": "3.0.0" 解决了这个问题。仍然不确定是否解决了特定错误以在 3.0.0
中修复此问题另请注意:Gruntfile 中的 baseUrl 被分配了一个函数,第一个参数是块:
baseUrl: function (block) {
grunt.log.debug("******************* blockReplacements *******************");
return '<base href="/mydir/">';
}
这个名为 block 的参数实际上并没有在函数中使用,href return 是一个字符串(我知道这很糟糕,不应该这样使用,但只是在这里指出一些事情)。在client/index.html中调用这个函数必须有一个参数传递给它:
<!-- build:baseUrl /mydir/ -->
<base href="/">
<!-- endbuild -->
如果您删除 /mydir/ url 部分,则以下内容将无法创建基本标签:
<!-- build:baseUrl -->
<base href="/">
<!-- endbuild -->
所以实际上我们可以添加 /some-rubbish-url-portion/ 并且它不会失败并且不会对基本标签的结果产生任何影响。