对于配置代码转换的Jest配置文件,我试图创建一个模式,该模式将忽略node_modules/.pnpm中的所有文件,但某个包(@react-unicons的一个分支)除外,但在整个前瞻性尝试中始终失败,要么匹配太多,要么太少。
这有可能吗?
从下面的字符串列表中,我只想从.pnpm中筛选出除文件夹github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704以外的所有其他行。这意味着来自node_modules/.pnpm外部的文件需要保存在输出中。
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-times.js",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-arrow-left.js",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/.github/workflows/autotag.yml",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-transaction.js",
/home/me/code/proj-foo/node_modules/",
"/home/me/code/proj-foo/node_modules/exif-js",
"/home/me/code/proj-foo/node_modules/eslint-plugin-testing-library",
"/home/me/code/proj-foo/node_modules/@typescript-eslint",
"/home/me/code/proj-foo/node_modules/chart.js",
"/home/me/code/proj-foo/node_modules/@iconscout",
"/home/me/code/proj-foo/node_modules/@iconscout/react-unicons",
"/home/me/code/proj-foo/node_modules/react-redux",
"/home/me/code/proj-foo/node_modules/.bin",
"/home/me/code/proj-foo/node_modules/stmux",
"/home/me/code/proj-foo/node_modules/only-allow",
"/home/me/code/proj-foo/node_modules/react-addons-deep-compare",
"/home/me/code/proj-foo/code/my-app/src/components/one-offs",
"/home/me/code/proj-foo/code/my-app/src/components/one-offs/MainGuiLayout.tsx",
"/home/me/code/proj-foo/code/my-app/src/components/one-offs/AppWrapper.jsx"
const files = [
"/home/me/code/proj-foo/node_modules/.pnpm/@babel+runtime@7.17.2/node_modules/@babel/runtime/regenerator/index.js",
"/home/me/code/proj-foo/node_modules/.pnpm/regenerator-runtime@0.13.9/node_modules/regenerator-runtime/runtime.js",
"/home/me/code/proj-foo/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isEmpty.js",
"/home/me/code/proj-foo/node_modules/.pnpm/@material-ui+core@4.12.3_b8fdba992ce7d797017dc07106486496/node_modules/@material-ui/core/Zoom/Zoom.js",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-times.js",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-arrow-left.js",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/.github/workflows/autotag.yml",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-transaction.js",
"/home/me/code/proj-foo/node_modules/.pnpm/github-slugger@1.4.0",
"/home/me/code/proj-foo/node_modules/.pnpm/github-slugger@1.4.0/node_modules",
"/home/me/code/proj-foo/node_modules/.pnpm/github-slugger@1.4.0/node_modules/github-slugger",
"/home/me/code/proj-foo/node_modules/",
"/home/me/code/proj-foo/node_modules/exif-js",
"/home/me/code/proj-foo/node_modules/eslint-plugin-testing-library",
"/home/me/code/proj-foo/node_modules/@typescript-eslint",
"/home/me/code/proj-foo/node_modules/chart.js",
"/home/me/code/proj-foo/node_modules/@iconscout",
"/home/me/code/proj-foo/node_modules/@iconscout/react-unicons",
"/home/me/code/proj-foo/node_modules/react-redux",
"/home/me/code/proj-foo/node_modules/.bin",
"/home/me/code/proj-foo/node_modules/stmux",
"/home/me/code/proj-foo/node_modules/only-allow",
"/home/me/code/proj-foo/node_modules/react-addons-deep-compare",
"/home/me/code/proj-foo/code/my-app/src/components/one-offs",
"/home/me/code/proj-foo/code/my-app/src/components/one-offs/MainGuiLayout.tsx",
"/home/me/code/proj-foo/code/my-app/src/components/one-offs/AppWrapper.jsx"
]
const nodeModulesPattern = 'node_modules'
const nodeModulesPattern0 = 'node_modules/.pnpm'
const nodeModulesPattern1 = 'node_modules/(?!@iconscout)'
const nodeModulesPattern2 = 'node_modules/(?!\.pnpm)'
const nodeModulesPattern3 = 'node_modules/.pnpm/(?!(github.com\+ACME))/'
const re = new RegExp(nodeModulesPattern0)
// only print what does NOT match
for ( const line of files ) {
if(!re.test(line)) console.log("NO match: ", line);
}
正确的regex意味着输出wuold包含以"NO match:“开头的行,用于所有以下文件(这是上面files数组的子集):
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-times.js",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-arrow-left.js",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/.github/workflows/autotag.yml",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-transaction.js",
"/home/me/code/proj-foo/node_modules/",
"/home/me/code/proj-foo/node_modules/exif-js",
"/home/me/code/proj-foo/node_modules/eslint-plugin-testing-library",
"/home/me/code/proj-foo/node_modules/@typescript-eslint",
"/home/me/code/proj-foo/node_modules/chart.js",
"/home/me/code/proj-foo/node_modules/@iconscout",
"/home/me/code/proj-foo/node_modules/@iconscout/react-unicons",
"/home/me/code/proj-foo/node_modules/react-redux",
"/home/me/code/proj-foo/node_modules/.bin",
"/home/me/code/proj-foo/node_modules/stmux",
"/home/me/code/proj-foo/node_modules/only-allow",
"/home/me/code/proj-foo/node_modules/react-addons-deep-compare",
"/home/me/code/proj-foo/code/my-app/src/components/one-offs",
"/home/me/code/proj-foo/code/my-app/src/components/one-offs/MainGuiLayout.tsx",
"/home/me/code/proj-foo/code/my-app/src/components/one-offs/AppWrapper.jsx"发布于 2022-03-10 11:30:12
这里有一个建议:我们要么接受
在前7个组/+名称github\.com\+ACME\+react-unicons
的行
^(((?!pnpm).)*|.*github\.com\+ACME\+react-unicons.*)$https://stackoverflow.com/questions/71176496
复制相似问题