不能用 grunt-usemin 的自定义块替换 HTML 基标签替换



>我正在尝试将 HTML 基本标签的 href 属性值替换为/mydir/。尝试过这个与咕噜咕噜的块替换。

这是配置

// 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

但这只删除了基本标签,并没有替换。我怀疑我需要在 Gruntfile 中配置 baseUrl 属性,但我并没有尝试修改/丑化文件,并相信此属性会指向需要修改等的文件。

我也尝试运行调试来触发 grunt.log.debug 调用 buildReplace 函数:

$ grunt --debug serve:dist

但是没有控制台输出。

注意:我的应用程序基于角度全栈生成器应用程序。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 返回是一个字符串(我知道这很糟糕,不应该这样使用,但只是在这里指出一些东西)。在 client/index.html 中调用此函数必须传递一个参数:

<!-- build:baseUrl /mydir/ -->
<base href="/">
<!-- endbuild -->

如果删除/mydir/url 部分,则以下内容将无法创建基本标记:

<!-- build:baseUrl -->
<base href="/">
<!-- endbuild -->

因此,实际上我们可以添加/some-rubbish-url-partion/,它不会失败,也不会对基本标签的结果产生任何影响。

相关内容

  • 没有找到相关文章

最新更新