Отобразить.gitignore / .npmignore в исключение tar

Допустим, у меня есть файл.gitignore или.npmignore со следующим содержимым:

logs
*.sh
*.log

не то, чтобы файлы.npmignore создавались так, чтобы интерпретироваться так же, как файлы.gitignore.

Мой вопрос - как я могу использовать содержимое стандартного файла.npmignore / .gitignore и сопоставить их с --exclude опции для команды tar?

в основном мне нужно сделать что-то вроде этого:

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

или только это:

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

последнее кажется вполне нормальным, но как мне сопоставить то, что находится в.gitignore / .npmignore, с командной строкой? Есть ли пакет, который может это сделать?

1 ответ

Как я и подозревал, выглядит.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(' ')
    };
Другие вопросы по тегам