假设我有一个.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中的内容映射到命令行?是否有一些包可以做到这一点?
答案 0 :(得分: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(' ')
};