将.gitinore/.npmignore映射到tar排除

将.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

假设我有一个.gitignore或.npmignore文件,其中包含以下内容:

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}`;
})
.加入(“”)
};