如何用 grunt 更改行内容?

How can i change the line content with another with grunt?

我有一个简单的任务,

当我写命令时 "grunt build" 我希望这两行改变状态,像这样:

命令之前:

        baseUrl : 'http://localhost:3000/'
        //baseUrl : 'http://188.166.18.108/'

命令后

        //baseUrl : 'http://localhost:3000/'
        baseUrl : 'http://188.166.18.108/'

构建结束更改回:

        baseUrl : 'http://localhost:3000/'
        //baseUrl : 'http://188.166.18.108/'

grunt 是否可以这样做?谢谢大家!

您应该尝试使用 grunt-string-replace,像这样:

'string-replace': {
  dist: {
    files: {
      src: 'path/to/your/file',
      dest: 'path/to/your/file'
    },
    options: {
      replacements: [{
        pattern: "baseUrl : 'http://localhost:3000/'",
        replacement: "baseUrl : 'http://188.166.18.108:3000/'"
      }]
    }
  }
}

然后你的文件中可以只有一行,而不必注释它。

baseUrl : 'http://localhost:3000/'

此外,如果您想替换所有出现的 localhost,您可以将其用作模式,它将全部替换为您的 IP 地址:

...
pattern: "localhost",
replacement: "188.166.18.108"
...

要从 IP 地址 改回 localhost,您可以为字符串替换和 运行 添加一个新任务在你的构建中。它将类似于:

'string-replace': {
  prev: {
    files: {
      src: 'path/to/your/file',
      dest: 'path/to/your/file'
    },
    options: {
      replacements: [{
        pattern: "baseUrl : 'http://localhost:3000/'",
        replacement: "baseUrl : 'http://188.166.18.108:3000/'"
      }]
    }
  },
  after: {
    files: {
      src: 'path/to/your/file',
      dest: 'path/to/your/file'
    },
    options: {
      replacements: [{
        pattern: "baseUrl : 'http://188.166.18.108:3000/'",
        replacement: "baseUrl : 'http://localhost:3000/'"
      }]
    }
  }
}

然后 运行 它就像:

grunt.registerTask('replace', ['string-replace:prev', 'string-replace:after']);