【问题标题】:Is it possible to ignore files when copying directories in a yeoman generator?在 yeoman 生成器中复制目录时是否可以忽略文件?
【发布时间】:2016-03-28 12:26:59
【问题描述】:

我正在尝试编写一个 yeoman 生成器,有一次我需要将 github 存储库的文件/文件夹复制到当前工作目录,例如:

this.remote('owner', 'repo', function (err, remote) {
    remote.directory('.', '.');
});

但是我想忽略这个 repo 中的一些文件,可以这样做吗?我找到了function responsible for this,但它似乎不是一个明确的方法,你可以传递一个process 函数,但我不确定你是否可以“取消”正在复制的文件,如果它匹配一定的模式。

【问题讨论】:

    标签: glob yeoman yeoman-generator


    【解决方案1】:

    来自 mem-fs-editor docs:

    对于全局化的 from,您可以选择传入一个 options.globOptions 对象来改变它的模式匹配行为。

    查看选项here

    例子:

    this.fs.copy("<from path>/**", "<to path>",
      {
        globOptions: {
          ignore: [
            globs to ignore...
          ]
        }
      }
    );
    

    【讨论】:

      【解决方案2】:

      您应该依赖this.fs object 而不是旧的折旧文件方法。

      this.fs 上的辅助方法支持 glob 模式,因此忽略某些文件变得微不足道。

      您可以在此处了解有关 Yeoman 文件系统的更多信息:http://yeoman.io/authoring/file-system.html

      【讨论】:

      • 是的,我最终使用this.fs.copy 方法和全局模式来匹配remote.cachePath 位置中的文件以忽略我不需要的文件。不确定这是否是最好的方法,但它似乎适用于我现在所需要的。
      • 是的,这是最好的方法。进一步的改进可能是仅依靠 npm 来获取存储库,而不是在运行时使用 this.remote
      • 你能详细说明最后一点吗?我很好奇那会是什么样子。
      • 只是npm i --save https://github.com/some/package。然后你只需从node_modules 文件夹中复制。
      • 我明白了,在我的情况下,repo 并不总是相同,它可以通过提示用户进行自定义,所以我想使用 remote 就足够了。
      猜你喜欢
      • 1970-01-01
      • 2012-09-24
      • 2017-09-14
      • 1970-01-01
      • 1970-01-01
      • 2021-06-07
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      相关资源
      最近更新 更多