Отобразить .gitignore / .npmignore в исключение tar - PullRequest
0 голосов
/ 15 мая 2018

Допустим, у меня есть файл .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 Ответ

0 голосов
/ 16 мая 2018

Как я и подозревал, похоже, что .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(' ')
    };
...