grunt:如何使用grunt任务替换html文件中的路径

Jea*_*eri 9 task gruntjs

在我的grunt配置中,如果有一个变量,它定义了一个包含css文件的目录.现在我想配置一个grunt任务,将该变量的值插入到html文件中.例如,我可以想象我有一个index.html文件,如下所示

<!doctype html>
   <head>
      <link rel="stylesheet" href="<% pathToCss %>/styles.css">
      ...
Run Code Online (Sandbox Code Playgroud)

但我找不到能为我做到这一点的任务.任何grunt taks的建议都能为我做到这一点?

Jea*_*eri 10

我刚刚发现它可以用grunt.template完成,如下所示:

template: {
        options: {
            data: {
                pathToCss: './css'
            }
        },
        demo: {
            files: [
                { '<%= ./output/index.html':  ['<%= ./input/template.html'] }
            ]
        }
    },
Run Code Online (Sandbox Code Playgroud)

在输入文件(template.html)中,您可以按如下方式定义'pathToCss':

<link rel="stylesheet" href="../../<%- pathToCss %>/styles.css">
Run Code Online (Sandbox Code Playgroud)

但是,如果我查看文档,我看不出这是文档的位置!


Tay*_*nli 7

我认为grunt-replace包是您正在寻找的.您可以读取外部文件并在patterns定义中使用其值,如下所示:

replace: {
  dist: {
    options: {
      patterns: [
        {
          match: '<% pathToCss %>',
          replacement: '<%= grunt.file.read("conf/assets-dir.txt") %>'
        }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)