Отобразить.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(' ')
};