【问题标题】:How can I replace the variable which is in test.js file from gruntfile?如何从 gruntfile 替换 test.js 文件中的变量?
【发布时间】:2017-06-23 00:58:36
【问题描述】:

例如我有这段代码,用这个我可以只替换任何文件中的字符串,但由于替换变量的值,我需要类似的东西。

'string-replace': {

  dist:{
    files: [{
      expand: true,
      src: 'test.js'

    }],
    options: {  
      replacements: [{
        pattern: 'blabla',
        replacement: 'blabla1'

      }],     
     }
  }

【问题讨论】:

  • "我需要类似的东西,但对于变量" => 你想用这个做什么?重命名变量...?
  • 不,我需要替换变量的值
  • 你能提供一个你正在尝试做的例子吗?这将有助于解释为什么您不能将其作为函数的参数在 Grunt 完成代码后无法配置。
  • 我有一个已经与某人一起编写的代码,现在我想更改代码内部的某些内容。就像我有 gruntfile 和 gruntfile 内部一样,我应该编写一个将访问该变量并将其替换为另一个文件中的变量。我的问题是如何访问该变量。是否可以在此处上传文件,然后我可以更好地解释

标签: javascript angularjs node.js gruntjs


【解决方案1】:

我 100% 确定您要达到的目标。您可以像下面这样替换变量赋值,以便它们获得您的新值。这是你想要做的吗?

'string-replace': {

  dist:{
    files: [{
      expand: true,
      src: 'test.js'

    }],
    options: {  
      replacements: [{
        pattern: 'var myVar = oldValue', //replace var assignment
        replacement: 'var myVar = newValue'//var has newValue now

      }],     
     }
  }

更新 您只能在运行时访问 myVar 的当前值。您不能使用 grunt 来确定这一点。但是,您可以将 myVar 设置为您想要的任何值,如上所述。或者例如,如果您有如下代码:

if(myVar)
{
  //do this block
}

你可以做文本替换插入

var tmp = myVar
myVar = true;
if(myVar){
//will now always run
}
myVar=tmp // resetState

【讨论】:

  • 感谢您的回答。是的,您是对的,但问题是我们不知道 myVar 的值,我们只知道变量的名称,它是 myVar 那么我们该怎么做和你写的一样吗?
  • 我们可以这样做吗,我将这个变量设为全局变量,然后我可以轻松获取该值
猜你喜欢
  • 2019-02-18
  • 1970-01-01
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
相关资源
最近更新 更多