用于匹配文件夹内容的互补子组的正则表达式(webpack 供应商包)
Regex to match complementary subgroups of a folder's contents (webpack vendor bundles)
我正在尝试找出两个正则表达式,我将使用它们与 Webpack 一起创建两个不同的供应商包。
这是我的 node_modules
文件夹的简化列表:
autonumeric
core-js
jquery
jquery-ui
jquery.watch
marked
第一个供应商包应该是 "essentials" 包,比方说,它们是 jquery
和 core-js
。
core-js
jquery
第二个供应商包应包含 node_modules
、 除了 jquery
和 core-js
的 中的所有其他包(这意味着正则表达式必须匹配 jquery-ui
).
autonumeric
jquery-ui
jquery.watch
marked
这是我当前的正则表达式:
- 必需品包:
/node_modules\/(jquery|core-js)\/.*\.js/
- "rest of" 捆绑包:
/node_modules(?!\/(jquery|core-js))(\/[a-zA-Z0-9-_]+)+\.js
问题是第二个正则表达式与 jquery*
库不匹配,可能是因为以 jquery
.
开头的否定前瞻
您需要在 jquery
或 core-js
之后添加对 /
字符的检查,因为您只需要将它们作为整个子文件夹名称失败:
node_modules(?!\/(jquery|core-js)\/)(\/[^\/]+)+\.js
^^
或者,如果也可以有字符串结尾:
node_modules(?!\/(jquery|core-js)(\/|$))(\/[^\/]+)+\.js
请注意,我还建议将 [a-zA-Z0-9-_]+
替换为更通用的 [^\/]+
,匹配 /
以外的任何 1+ 个字符,但如果您的要求更具体,您可以保留您的模式.
我正在尝试找出两个正则表达式,我将使用它们与 Webpack 一起创建两个不同的供应商包。
这是我的 node_modules
文件夹的简化列表:
autonumeric
core-js
jquery
jquery-ui
jquery.watch
marked
第一个供应商包应该是 "essentials" 包,比方说,它们是 jquery
和 core-js
。
core-js
jquery
第二个供应商包应包含 node_modules
、 除了 jquery
和 core-js
的 中的所有其他包(这意味着正则表达式必须匹配 jquery-ui
).
autonumeric
jquery-ui
jquery.watch
marked
这是我当前的正则表达式:
- 必需品包:
/node_modules\/(jquery|core-js)\/.*\.js/
- "rest of" 捆绑包:
/node_modules(?!\/(jquery|core-js))(\/[a-zA-Z0-9-_]+)+\.js
问题是第二个正则表达式与 jquery*
库不匹配,可能是因为以 jquery
.
您需要在 jquery
或 core-js
之后添加对 /
字符的检查,因为您只需要将它们作为整个子文件夹名称失败:
node_modules(?!\/(jquery|core-js)\/)(\/[^\/]+)+\.js
^^
或者,如果也可以有字符串结尾:
node_modules(?!\/(jquery|core-js)(\/|$))(\/[^\/]+)+\.js
请注意,我还建议将 [a-zA-Z0-9-_]+
替换为更通用的 [^\/]+
,匹配 /
以外的任何 1+ 个字符,但如果您的要求更具体,您可以保留您的模式.