0

假设我有一个包含以下内容的 .gitignore 或 .npmignore 文件:

logs
*.sh
*.log

并不是说 .npmignore 文件被设计为像 .gitignore 文件一样被解释。

我的问题是- 如何使用标准 .npmignore / .gitignore 文件的内容并将它们映射到--excludetar 命令的选项?

基本上我需要做这样的事情:

find -not -path (whatever is in gitignore) | tar

或者只是这个:

tar --exclude="whatever matches gitignore/npmignore"

后者看起来不错,但是如何将 .gitignore / .npmignore 中的内容映射到命令行?有没有可以做到这一点的包?

4

1 回答 1

0

正如我所怀疑的,它看起来 .gitignore / .npmignore 旨在直接映射到命令行工具,例如find,tar等。

所以在 Node.js/TypeScript 代码中,我只有这个,它似乎工作:

   const keep: Array<RegExp> = [
     /^README/i,
     /^package\.json$/,
     /^LICENSE/i,
     /^LICENCE/i,
     /^CHANGELOG/i
   ];

    export const npmIgnoreToArray = function (npmignore: string): Array<string> {
      return String(npmignore).trim().split('\n').map(v => String(v).trim())
        .filter(Boolean)
        .filter(v => !v.startsWith('#'))
        .filter(function (v) {
          return !keep.some(function (rgx) {
            return rgx.test(v);
          })
        });
    };

    export const npmIgnoreToTARExclude = function (npmignore: Array<string>): string {
      return npmignore.map(function (v) {
          return `--exclude='${v}'`;
        })
        .join(' ')
    };
于 2018-05-15T21:15:51.523 回答