将.gitinore/.npmignore映射到tar排除
假设我有一个.gitignore或.npmignore文件,其中包含以下内容:将.gitinore/.npmignore映射到tar排除,npm,tar,gitignore,npmignore,Npm,Tar,Gitignore,Npmignore,假设我有一个.gitignore或.npmignore文件,其中包含以下内容: logs *.sh *.log 不是说.npmignore文件被设计成像.gitmignore文件一样被解释 我的问题是-如何使用标准.npmignore/.gitignore文件的内容并将其映射到tar命令的--排除选项 基本上我需要这样做: find -not -path (whatever is in gitignore) | tar 或者仅仅是这样: tar --exclude="whatever mat
logs
*.sh
*.log
不是说.npmignore文件被设计成像.gitmignore文件一样被解释
我的问题是-如何使用标准.npmignore/.gitignore文件的内容并将其映射到tar命令的--排除
选项
基本上我需要这样做:
find -not -path (whatever is in gitignore) | tar
或者仅仅是这样:
tar --exclude="whatever matches gitignore/npmignore"
后者看起来不错,但是如何将.gitignore/.npmignore中的内容映射到命令行呢?有什么软件包可以做到这一点吗?正如我所怀疑的,它看起来.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(' ')
};
const keep:Array=[
/^自述文件/i,
/^包\.json$/,
/^许可证/i,
/^牌照/i,
/^更改日志/i
];
export const npmIgnoreToArray=函数(npmignore:string):数组{
返回字符串(npmignore).trim().split('\n').map(v=>String(v).trim())
.filter(布尔值)
.filter(v=>!v.startsWith('#'))
.过滤器(功能(v){
return!keep.some(函数(rgx){
返回rgx.test(v);
})
});
};
export const npmIgnoreToTARExclude=函数(npmignore:Array):字符串{
返回npmignore.map(函数(v){
返回`--exclude='${v}`;
})
.加入(“”)
};