Javascript 冲突安全附加到Yeoman生成器中的现有文件

Javascript 冲突安全附加到Yeoman生成器中的现有文件,javascript,django,yeoman,yeoman-generator,Javascript,Django,Yeoman,Yeoman Generator,我正在为一个Django/Angular项目编写一个yeoman生成器。项目中的样板文件很大一部分涉及到管理依赖关系。为了简化依赖关系管理,我将某些文件本质上视为头文件,用于定义某个包导出或导入的内容。例如,当我在mymy_app/models/包中创建一个新文件my_model.py时,我想将行from.my_model import MyModel附加到my_app/models/\uuu init_uuuuuuuuuu.py 因为这只是一个简单的附加部分,它不特别依赖于的其余部分,即.p>

我正在为一个Django/Angular项目编写一个yeoman生成器。项目中的样板文件很大一部分涉及到管理依赖关系。为了简化依赖关系管理,我将某些文件本质上视为头文件,用于定义某个包导出或导入的内容。例如,当我在my
my_app/models/
包中创建一个新文件
my_model.py
时,我想将行
from.my_model import MyModel
附加到
my_app/models/\uuu init_uuuuuuuuuu.py

因为这只是一个简单的附加部分,它不特别依赖于<代码>的其余部分,即.p> < />代码>文件,我认为这是一个非常安全的文件更新。我的问题是,是否有一种方法可以从开发的角度将yeoman中的特定文件更新标记为安全的,从而允许用户在运行生成器的冲突解决阶段不必签署这些更新

目前我执行追加的方式如下:

var self = this;
this.fs.copy(
  this.destinationPath(this.props.appName + '/models/__init__.py'),
  this.destinationPath(this.props.appName + '/models/__init__.py'),
  { 
    process: function (contents) {
      return contents += 'from .' + _.snakeCase(self.props.modelName) + ' import ' + self.props.modelName + '\n';
    }
  }
);

没有办法结束冲突。你没有责任为你的最终用户决定什么是“安全的”,什么不是


如果您引入了一个bug并破坏了用户文件,该怎么办?这就是为什么生成器不能跳过冲突。

有时您可能希望替换某些文件,例如,在第一次运行时替换gulp或grunt文件,即拉出框架源代码时

托比在这里给出了一个很好的方法: