将.gitignore / .npmignore映射到tar排除

时间:2018-05-15 20:23:53

标签: npm tar gitignore npmignore

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

logs
*.sh
*.log

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

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

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

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

或只是这个:

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

后者似乎很好,但是如何将.gitignore / .npmignore中的内容映射到命令行?是否有一些包可以做到这一点?

1 个答案:

答案 0 :(得分:0)

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

所以在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(' ')
    };