{"uuid": "e5e8425d-372f-4aed-a18c-888bda753e73", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2026-73088", "type": "seen", "source": "https://gist.github.com/djlan/abb58fed073f262e5e0917ae453bde64", "content": "# [SECURITY] \u5c06 Terminal \u793a\u4f8b\u4e2d\u7684 browserslist \u4ece 4.24.2 \u5347\u7ea7\u5230 4.28.8\n\n&gt; **\u4e00\u53e5\u8bdd\u6458\u8981\uff1a** \u6b64 PR \u4ec5\u66f4\u65b0 Terminal \u670d\u52a1\u7aef\u6269\u5c55\u793a\u4f8b\u7684 npm \u9501\u6587\u4ef6\uff0c\u5c06 `browserslist` \u53ca\u5176\u6d4f\u89c8\u5668\u6570\u636e\u4f9d\u8d56\u5347\u7ea7\u5230\u4fee\u590d\u7248\u672c\uff0c\u4ee5\u5904\u7406\u4e24\u4e2a\u9ad8\u5371 Component Governance \u5b89\u5168\u544a\u8b66\uff0c\u540c\u65f6\u4fdd\u6301\u4f9d\u8d56\u5b89\u88c5\u7ed3\u679c\u53ef\u91cd\u590d\u3002\n\n| \u9879\u76ee | \u5185\u5bb9 |\n|---|---|\n| PR | [AzureNotebooks PR 778780](https://dev.azure.com/devdiv/OnlineServices/_git/AzureNotebooks/pullrequest/778780) |\n| \u4f5c\u8005 | Dependabot |\n| \u72b6\u6001 | \u6d3b\u8dc3\uff08\u975e\u8349\u7a3f\uff09\uff1b\u5408\u5e76\u72b6\u6001\u4e3a `succeeded` |\n| \u5206\u652f | `dependabot/npm_and_yarn/sample%2Fextensions%2Fserver-extensions%2FTerminal/browserslist-4.28.8-758268` \u2192 `main` |\n| \u521b\u5efa\u65f6\u95f4 | 2026-09-08 09:33:35 |\n| \u53d8\u66f4\u7edf\u8ba1 | 1 \u4e2a\u6587\u4ef6\u30011 \u4e2a\u63d0\u4ea4\u30011 \u6b21\u8fed\u4ee3\uff1b63 \u884c\u65b0\u589e\u300141 \u884c\u5220\u9664\uff08\u6309\u5305\u5185 diff \u7edf\u8ba1\uff0c\u5171 104 \u884c\u53d8\u52a8\uff09\uff1bdiff \u5927\u5c0f 9,448 \u5b57\u8282 |\n| \u5b89\u5168\u80cc\u666f | \u5904\u7406\u4e24\u4e2a\u9ad8\u5371\u544a\u8b66\uff1aCVE-2026-73088\u3001CVE-2026-73089 |\n\n## \u76ee\u5f55\n\n- [\u53d8\u66f4\u6982\u89c8](#\u53d8\u66f4\u6982\u89c8)\n- [\u6309\u529f\u80fd\u6a21\u5757\u8bf4\u660e](#\u6309\u529f\u80fd\u6a21\u5757\u8bf4\u660e)\n  - [1. browserslist \u5b89\u5168\u5347\u7ea7](#1-browserslist-\u5b89\u5168\u5347\u7ea7)\n  - [2. \u6d4f\u89c8\u5668\u517c\u5bb9\u6027\u6570\u636e\u540c\u6b65](#2-\u6d4f\u89c8\u5668\u517c\u5bb9\u6027\u6570\u636e\u540c\u6b65)\n  - [3. \u65b0\u589e Baseline \u6d4f\u89c8\u5668\u6620\u5c04\u80fd\u529b](#3-\u65b0\u589e-baseline-\u6d4f\u89c8\u5668\u6620\u5c04\u80fd\u529b)\n  - [4. \u9501\u6587\u4ef6\u4e00\u81f4\u6027\u4e0e\u5236\u54c1\u6765\u6e90](#4-\u9501\u6587\u4ef6\u4e00\u81f4\u6027\u4e0e\u5236\u54c1\u6765\u6e90)\n- [\u5f71\u54cd\u5206\u6790](#\u5f71\u54cd\u5206\u6790)\n- [\u98ce\u9669\u4e0e\u517c\u5bb9\u6027\u5173\u6ce8](#\u98ce\u9669\u4e0e\u517c\u5bb9\u6027\u5173\u6ce8)\n- [\u6d4b\u8bd5\u4e0e\u9a8c\u8bc1](#\u6d4b\u8bd5\u4e0e\u9a8c\u8bc1)\n- [\u5206\u6790\u8986\u76d6\u8303\u56f4\u4e0e\u622a\u65ad\u8bf4\u660e](#\u5206\u6790\u8986\u76d6\u8303\u56f4\u4e0e\u622a\u65ad\u8bf4\u660e)\n\n## \u53d8\u66f4\u6982\u89c8\n\n\u672c\u6b21\u53d8\u66f4\u53ea\u6d89\u53ca [`sample/extensions/server-extensions/Terminal/package-lock.json`](https://dev.azure.com/devdiv/OnlineServices/_git/AzureNotebooks/pullrequest/778780?path=/sample/extensions/server-extensions/Terminal/package-lock.json&amp;_a=files)\uff0c\u6ca1\u6709\u4fee\u6539\u4e1a\u52a1\u6e90\u7801\u6216 `package.json`\u3002\u6838\u5fc3\u4f9d\u8d56 `browserslist` \u4ece `4.24.2` \u5347\u7ea7\u5230 `4.28.8`\uff0c\u5e76\u7531 npm \u9501\u6587\u4ef6\u540c\u6b65\u66f4\u65b0\u5176\u4f20\u9012\u4f9d\u8d56\u3001\u4e0b\u8f7d\u5730\u5740\u548c\u5b8c\u6574\u6027\u6821\u9a8c\u503c\u3002\n\n\u8fd9\u6837\u505a\u7684\u76f4\u63a5\u539f\u56e0\u662f Dependabot \u68c0\u6d4b\u5230\u4e0e\u65e7\u7248\u672c\u76f8\u5173\u7684\u4e24\u4e2a\u9ad8\u5371 Component Governance \u544a\u8b66\u3002\u5347\u7ea7\u540e\u7684\u7248\u672c\u8303\u56f4\u5305\u542b\u4e0a\u6e38\u53d1\u5e03\u8bf4\u660e\u4e2d\u63d0\u5230\u7684\u539f\u578b\u6c61\u67d3/\u539f\u578b\u5199\u5165\u95ee\u9898\u4fee\u590d\u3001\u65e0\u754c\u5185\u5b58\u589e\u957f\u4fee\u590d\u548c\u89e3\u6790\u6027\u80fd\u6539\u8fdb\uff1b\u4e0d\u8fc7\uff0c\u5206\u6790\u5305\u6ca1\u6709\u63d0\u4f9b CVE \u4e0e\u5177\u4f53\u4e0a\u6e38\u63d0\u4ea4\u4e4b\u95f4\u7684\u9010\u9879\u6620\u5c04\uff0c\u56e0\u6b64\u4e0d\u80fd\u8fdb\u4e00\u6b65\u65ad\u8a00\u6bcf\u4e2a CVE \u5206\u522b\u7531\u54ea\u4e00\u9879\u4ee3\u7801\u4fee\u590d\u89e3\u51b3\u3002\n\n## \u6309\u529f\u80fd\u6a21\u5757\u8bf4\u660e\n\n### 1. browserslist \u5b89\u5168\u5347\u7ea7\n\n**\u4e3a\u4ec0\u4e48\u6539\uff1a** `browserslist` \u7528\u4e8e\u6839\u636e\u67e5\u8be2\u89c4\u5219\u89e3\u6790\u76ee\u6807\u6d4f\u89c8\u5668\u96c6\u5408\uff0c\u5176\u65e7\u7248\u672c\u89e6\u53d1\u4e86 CVE-2026-73088 \u548c CVE-2026-73089 \u4e24\u4e2a\u9ad8\u5371\u6cbb\u7406\u544a\u8b66\u3002\u5c06\u7248\u672c\u63d0\u5347\u81f3 `4.28.8` \u662f\u672c PR \u7684\u5b89\u5168\u4fee\u590d\u4e3b\u4f53\u3002\n\n**\u5982\u4f55\u5de5\u4f5c\uff1a**\n\n- \u9501\u5b9a\u7248\u672c\u7531 `4.24.2` \u66f4\u65b0\u4e3a `4.28.8`\u3002\n- `resolved` \u5730\u5740\u5207\u6362\u5230 AzureNotebooks \u5185\u90e8 npm feed \u4e2d\u5bf9\u5e94\u7684 `4.28.8` \u5236\u54c1\u3002\n- `integrity` \u6821\u9a8c\u503c\u968f\u5236\u54c1\u66f4\u65b0\uff0cnpm \u5b89\u88c5\u65f6\u4f1a\u6821\u9a8c\u4e0b\u8f7d\u5185\u5bb9\u4e0e\u9501\u6587\u4ef6\u662f\u5426\u4e00\u81f4\u3002\n- \u4e0a\u6e38\u53d1\u5e03\u4fe1\u606f\u8868\u660e\u8be5\u7248\u672c\u533a\u95f4\u5305\u542b\u539f\u578b\u6c61\u67d3\u3001\u539f\u578b\u5199\u5165\u3001\u65e0\u754c\u5185\u5b58\u589e\u957f\u4ee5\u53ca\u591a\u9879\u67e5\u8be2\u89e3\u6790\u95ee\u9898\u7684\u4fee\u590d\u3002\n\n\u8be5\u6a21\u5757\u7684\u53d8\u66f4\u96c6\u4e2d\u5728 [`package-lock.json`](https://dev.azure.com/devdiv/OnlineServices/_git/AzureNotebooks/pullrequest/778780?path=/sample/extensions/server-extensions/Terminal/package-lock.json&amp;_a=files) \u4e2d\uff0c\u4e0d\u4f1a\u76f4\u63a5\u6539\u53d8\u4ed3\u5e93\u5185\u7684\u5e94\u7528\u5b9e\u73b0\u4ee3\u7801\uff1b\u5b9e\u9645\u884c\u4e3a\u53d8\u5316\u6765\u81ea\u5b89\u88c5\u540e\u4f7f\u7528\u7684\u65b0\u4f9d\u8d56\u7248\u672c\u3002\n\n### 2. \u6d4f\u89c8\u5668\u517c\u5bb9\u6027\u6570\u636e\u540c\u6b65\n\n`browserslist` \u7684\u67e5\u8be2\u7ed3\u679c\u4f9d\u8d56\u6d4f\u89c8\u5668\u7248\u672c\u6570\u636e\u5e93\u3002\u4e3a\u5339\u914d\u65b0\u7248\u672c\uff0c\u5176\u76f8\u5173\u6570\u636e\u5305\u540c\u65f6\u5347\u7ea7\uff1a\n\n| \u4f9d\u8d56 | \u65e7\u7248\u672c | \u65b0\u7248\u672c | \u4f5c\u7528 |\n|---|---:|---:|---|\n| `caniuse-lite` | `1.0.30001687` | `1.0.30001810` | \u63d0\u4f9b Web \u529f\u80fd\u53ca\u6d4f\u89c8\u5668\u652f\u6301\u6570\u636e |\n| `electron-to-chromium` | `1.5.72` | `1.5.418` | \u5c06 Electron \u7248\u672c\u6620\u5c04\u5230 Chromium \u7248\u672c |\n| `node-releases` | `2.0.19` | `2.0.54` | \u63d0\u4f9b Node.js \u53d1\u5e03\u7248\u672c\u6570\u636e |\n| `update-browserslist-db` | `1.1.1` | `1.3.2` | \u66f4\u65b0 Browserslist \u4f7f\u7528\u7684\u6570\u636e\u96c6 |\n\n\u8fd9\u4e9b\u5347\u7ea7\u4f7f `browserslist@4.28.8` \u6309\u5176\u58f0\u660e\u7684\u4f9d\u8d56\u8303\u56f4\u83b7\u5f97\u8f83\u65b0\u7684\u6570\u636e\uff0c\u907f\u514d\u6838\u5fc3\u89e3\u6790\u5668\u5df2\u5347\u7ea7\u4f46\u6570\u636e\u4ecd\u505c\u7559\u5728\u65e7\u5feb\u7167\u3002\u7ed3\u679c\u662f\u76f8\u540c Browserslist \u67e5\u8be2\u5728\u5c11\u6570\u8fb9\u754c\u573a\u666f\u4e0b\u53ef\u80fd\u5f97\u5230\u66f4\u7b26\u5408\u5f53\u524d\u6d4f\u89c8\u5668\u751f\u6001\u7684\u76ee\u6807\u96c6\u5408\u3002\n\n### 3. \u65b0\u589e Baseline \u6d4f\u89c8\u5668\u6620\u5c04\u80fd\u529b\n\n\u65b0\u7248 `browserslist` \u65b0\u589e\u4e86\u5bf9 `baseline-browser-mapping` \u7684\u4f9d\u8d56\uff0c\u9501\u6587\u4ef6\u56e0\u6b64\u52a0\u5165 `2.11.20`\uff1a\n\n- \u8be5\u5305\u63d0\u4f9b Web Platform Baseline \u4e0e\u5177\u4f53\u6d4f\u89c8\u5668\u7248\u672c\u4e4b\u95f4\u7684\u6620\u5c04\u3002\n- \u5b83\u88ab\u8bb0\u5f55\u5728\u9501\u6587\u4ef6\u7684\u65b0\u3001\u65e7\u4e24\u5957\u4f9d\u8d56\u8868\u793a\u7ed3\u6784\u4e2d\uff0c\u8bf4\u660e\u5f53\u524d\u9501\u6587\u4ef6\u683c\u5f0f\u540c\u65f6\u7ef4\u62a4 `node_modules/...` \u6761\u76ee\u548c\u9876\u5c42\u4f9d\u8d56\u6811\u3002\n- \u5305\u58f0\u660e\u7684 Node.js \u5f15\u64ce\u4e3a `&gt;=6.0.0`\uff0c\u672c\u8eab\u4e0d\u4f1a\u63d0\u9ad8\u8fd0\u884c\u65f6\u95e8\u69db\u3002\n\n\u8fd9\u4e00\u65b0\u589e\u4f9d\u8d56\u652f\u6301\u65b0\u7248 Browserslist \u7684 Baseline \u67e5\u8be2\u80fd\u529b\uff1b\u5373\u4f7f\u9879\u76ee\u5f53\u524d\u672a\u663e\u5f0f\u4f7f\u7528\u6b64\u7c7b\u67e5\u8be2\uff0c\u5b83\u4ecd\u662f\u65b0\u7248\u4f9d\u8d56\u56fe\u7684\u4e00\u90e8\u5206\u3002\n\n### 4. \u9501\u6587\u4ef6\u4e00\u81f4\u6027\u4e0e\u5236\u54c1\u6765\u6e90\n\n\u6240\u6709\u53d7\u5f71\u54cd\u5305\u7684 `resolved` \u548c `integrity` \u5b57\u6bb5\u5747\u968f\u7248\u672c\u66f4\u65b0\uff0c\u4e14\u5236\u54c1\u7ee7\u7eed\u6765\u81ea\u73b0\u6709\u7684 AzureNotebooks \u5185\u90e8 npm feed\u3002\u9501\u6587\u4ef6\u540c\u65f6\u66f4\u65b0\u4e86 `node_modules` \u7ed3\u6784\u548c\u517c\u5bb9\u7684\u9876\u5c42 `dependencies` \u7ed3\u6784\uff0c\u907f\u514d\u4e0d\u540c npm \u5ba2\u6237\u7aef\u8bfb\u53d6\u5230\u4e0d\u4e00\u81f4\u7684\u7248\u672c\u56fe\u3002\n\n`update-browserslist-db` \u5bf9 `picocolors` \u7684\u8981\u6c42\u7531 `^1.1.0` \u8c03\u6574\u4e3a `^1.1.1`\uff1b\u5305\u5185 diff \u6ca1\u6709\u663e\u793a\u5df2\u9501\u5b9a\u7684 `picocolors` \u5b9e\u9645\u7248\u672c\u53d1\u751f\u53d8\u5316\uff0c\u56e0\u6b64\u53ea\u80fd\u786e\u8ba4\u4f9d\u8d56\u7ea6\u675f\u6539\u53d8\uff0c\u4e0d\u80fd\u58f0\u79f0\u8be5\u5305\u672c\u8eab\u88ab\u5347\u7ea7\u3002\n\n## \u5f71\u54cd\u5206\u6790\n\n**\u5b89\u5168\u6027\uff1a** \u4e3b\u8981\u6b63\u5411\u5f71\u54cd\u662f\u66ff\u6362\u89e6\u53d1\u6cbb\u7406\u544a\u8b66\u7684\u65e7\u7248 `browserslist`\uff0c\u5e76\u5f15\u5165\u4e0a\u6e38\u5b89\u5168\u4fee\u590d\u7248\u672c\u3002\u82e5\u6784\u5efa\u548c\u90e8\u7f72\u786e\u5b9e\u4f7f\u7528\u6b64\u76ee\u5f55\u7684\u9501\u6587\u4ef6\uff0c\u540e\u7eed\u5b89\u88c5\u5c06\u89e3\u6790\u5230\u4fee\u590d\u540e\u7684\u5236\u54c1\u3002\n\n**\u6784\u5efa\u4e0e\u4ea7\u7269\uff1a** \u6d4f\u89c8\u5668\u76ee\u6807\u89e3\u6790\u7ed3\u679c\u53ef\u80fd\u56e0\u66f4\u65b0\u540e\u7684\u6570\u636e\u96c6\u548c\u67e5\u8be2\u89e3\u6790\u4fee\u590d\u800c\u53d8\u5316\uff0c\u8fdb\u800c\u5f71\u54cd Babel\u3001Autoprefixer \u6216\u5176\u4ed6\u8bfb\u53d6 Browserslist \u914d\u7f6e\u7684\u5de5\u5177\u6240\u751f\u6210\u7684\u8f6c\u8bd1\u4e0e CSS \u517c\u5bb9\u4ee3\u7801\u3002\u5305\u5185\u672a\u63d0\u4f9b\u5b9e\u9645\u6784\u5efa\u4ea7\u7269\u5bf9\u6bd4\uff0c\u56e0\u6b64\u5f71\u54cd\u89c4\u6a21\u672a\u77e5\u3002\n\n**\u8fd0\u884c\u65f6\uff1a** \u6ca1\u6709\u4e1a\u52a1\u6e90\u7801\u53d8\u5316\u3002\u98ce\u9669\u4e3b\u8981\u51fa\u73b0\u5728\u4f9d\u8d56\u5b89\u88c5\u3001\u6784\u5efa\u9636\u6bb5\u6216\u8fd0\u884c\u65f6\u8c03\u7528 Browserslist API \u7684\u8def\u5f84\uff0c\u800c\u975e Terminal \u6269\u5c55\u81ea\u8eab\u903b\u8f91\u88ab\u76f4\u63a5\u6539\u5199\u3002\n\n**\u4f9b\u5e94\u94fe\u4e0e\u53ef\u91cd\u590d\u5b89\u88c5\uff1a** \u4e0b\u8f7d\u6e90\u4ecd\u4e3a\u5185\u90e8 feed\uff0c\u5e76\u66f4\u65b0\u4e86\u5b8c\u6574\u6027\u54c8\u5e0c\uff1b\u8fd9\u4fdd\u6301\u4e86\u9501\u6587\u4ef6\u5b89\u88c5\u7684\u786e\u5b9a\u6027\u3002\u65b0\u589e\u4e00\u4e2a\u4f20\u9012\u4f9d\u8d56\u4f1a\u6269\u5927\u4e00\u4e2a\u5305\u7684\u4f9b\u5e94\u94fe\u9762\uff0c\u4f46\u5b83\u662f\u65b0\u7248 `browserslist` \u7684\u663e\u5f0f\u4f9d\u8d56\u3002\n\n**\u4ed3\u5e93\u8303\u56f4\uff1a** \u53d8\u66f4\u9650\u5b9a\u5728 Terminal \u793a\u4f8b\u76ee\u5f55\uff0c\u4e0d\u4ee3\u8868\u4ed3\u5e93\u5176\u4ed6\u4f4d\u7f6e\u7684 `browserslist` \u5b9e\u4f8b\u4e5f\u5df2\u5347\u7ea7\u6216\u76f8\u5173\u5b89\u5168\u544a\u8b66\u5df2\u5168\u90e8\u6d88\u9664\u3002\n\n## \u98ce\u9669\u4e0e\u517c\u5bb9\u6027\u5173\u6ce8\n\n1. **Node.js \u7248\u672c\u95e8\u69db\u53ef\u80fd\u63d0\u9ad8\u3002** `node-releases@2.0.54` \u5728\u9501\u6587\u4ef6\u4e2d\u58f0\u660e `node &gt;=18`\u3002\u5982\u679c Terminal \u793a\u4f8b\u7684\u5b89\u88c5\u6216\u6784\u5efa\u73af\u5883\u4ecd\u4f7f\u7528 Node.js 16 \u6216\u66f4\u65e9\u7248\u672c\uff0cnpm \u53ef\u80fd\u53d1\u51fa\u5f15\u64ce\u4e0d\u517c\u5bb9\u8b66\u544a\uff1b\u5728\u542f\u7528 `engine-strict` \u65f6\u53ef\u80fd\u76f4\u63a5\u5b89\u88c5\u5931\u8d25\u3002\u8fd9\u662f\u672c\u6b21\u5347\u7ea7\u6700\u5177\u4f53\u7684\u517c\u5bb9\u6027\u98ce\u9669\u3002\n2. **\u76ee\u6807\u6d4f\u89c8\u5668\u96c6\u5408\u53ef\u80fd\u53d8\u5316\u3002** \u66f4\u65b0 `caniuse-lite`\u3001Electron/Chromium \u6620\u5c04\u548c Node \u53d1\u5e03\u6570\u636e\u540e\uff0c\u76f8\u540c\u67e5\u8be2\u53ef\u80fd\u9009\u51fa\u4e0d\u540c\u7248\u672c\uff0c\u4ece\u800c\u6539\u53d8\u8f6c\u8bd1\u3001polyfill \u6216\u524d\u7f00\u8f93\u51fa\u3002\u5e94\u7279\u522b\u5173\u6ce8\u9879\u76ee\u662f\u5426\u4f9d\u8d56\u7cbe\u786e\u7a33\u5b9a\u7684\u65e7\u6d4f\u89c8\u5668\u4ea7\u7269\u3002\n3. **\u8de8\u591a\u4e2a\u6b21\u7248\u672c\u5347\u7ea7\u5b58\u5728\u884c\u4e3a\u5dee\u5f02\u3002** `4.24.2` \u5230 `4.28.8` \u4e0d\u53ea\u662f\u8865\u4e01\u5347\u7ea7\uff0c\u5305\u542b\u67e5\u8be2\u89e3\u6790\u3001Baseline \u67e5\u8be2\u3001Electron \u67e5\u8be2\u53ca\u6bd4\u8f83\u8fd0\u7b97\u7b26\u5904\u7406\u7b49\u53d8\u5316\u3002\u4f9d\u8d56\u975e\u6807\u51c6\u6216\u8fb9\u754c\u67e5\u8be2\u8bed\u6cd5\u7684\u914d\u7f6e\u9700\u8981\u56de\u5f52\u9a8c\u8bc1\u3002\n4. **\u4ec5\u66f4\u65b0\u9501\u6587\u4ef6\u7684\u524d\u63d0\u3002** \u5305\u5185\u672a\u663e\u793a `package.json` \u53d8\u5316\u3002\u82e5 `package.json` \u5bf9 `browserslist` \u7684\u58f0\u660e\u8303\u56f4\u4e0d\u80fd\u8986\u76d6 `4.28.8`\uff0c\u540e\u7eed\u91cd\u65b0\u751f\u6210\u9501\u6587\u4ef6\u53ef\u80fd\u56de\u9000\u6216\u4ea7\u751f\u5dee\u5f02\uff1b\u5f53\u524d\u5305\u6ca1\u6709\u63d0\u4f9b\u8be5\u6e05\u5355\u5185\u5bb9\uff0c\u65e0\u6cd5\u9a8c\u8bc1\u8fd9\u4e00\u70b9\u3002\n5. **\u65e7\u7248 npm \u7684\u517c\u5bb9\u6027\u9700\u786e\u8ba4\u3002** \u9501\u6587\u4ef6\u540c\u65f6\u5305\u542b\u4e24\u79cd\u4f9d\u8d56\u8868\u793a\uff0c\u8868\u660e\u5176\u683c\u5f0f\u9700\u8981\u517c\u987e\u7279\u5b9a npm \u7248\u672c\u3002\u867d\u7136 diff \u672c\u8eab\u4fdd\u6301\u4e86\u539f\u6709\u7ed3\u6784\uff0c\u4f46\u6ca1\u6709\u63d0\u4f9b\u9879\u76ee\u89c4\u5b9a\u7684 npm \u7248\u672c\u6216\u91cd\u65b0\u5b89\u88c5\u9a8c\u8bc1\u7ed3\u679c\u3002\n\n## \u6d4b\u8bd5\u4e0e\u9a8c\u8bc1\n\n\u5206\u6790\u5305\u4e2d\u6ca1\u6709\u6d4b\u8bd5\u6587\u4ef6\u53d8\u66f4\u3001\u6d4b\u8bd5\u6267\u884c\u8bb0\u5f55\u3001\u6d41\u6c34\u7ebf\u7ed3\u679c\u6216\u6784\u5efa\u65e5\u5fd7\uff0c\u56e0\u6b64\u4e0d\u80fd\u58f0\u79f0\u6d4b\u8bd5\u5df2\u7ecf\u901a\u8fc7\u3002PR \u5f53\u524d\u5408\u5e76\u72b6\u6001\u4e3a `succeeded`\uff0c\u4f46\u8be5\u5b57\u6bb5\u4e0d\u7b49\u540c\u4e8e\u6240\u6709 CI \u7b56\u7565\u6216\u6d4b\u8bd5\u5747\u6210\u529f\u3002\n\n\u5efa\u8bae\u9488\u5bf9 [`package-lock.json`](https://dev.azure.com/devdiv/OnlineServices/_git/AzureNotebooks/pullrequest/778780?path=/sample/extensions/server-extensions/Terminal/package-lock.json&amp;_a=files) \u6240\u5728\u76ee\u5f55\u81f3\u5c11\u9a8c\u8bc1\uff1a\n\n- \u4f7f\u7528\u4ed3\u5e93\u89c4\u5b9a\u7684 Node.js/npm \u7248\u672c\u6267\u884c\u5e72\u51c0\u5b89\u88c5\uff0c\u786e\u8ba4\u5185\u90e8 feed \u53ef\u89e3\u6790\u6240\u6709\u65b0\u5236\u54c1\u4e14\u5b8c\u6574\u6027\u6821\u9a8c\u901a\u8fc7\u3002\n- \u8fd0\u884c Terminal \u670d\u52a1\u7aef\u6269\u5c55\u793a\u4f8b\u73b0\u6709\u7684\u6784\u5efa\u548c\u6d4b\u8bd5\u547d\u4ee4\u3002\n- \u6267\u884c\u9879\u76ee\u5b9e\u9645\u4f7f\u7528\u7684 Browserslist \u67e5\u8be2\u5e76\u5bf9\u6bd4\u5347\u7ea7\u524d\u540e\u7684\u76ee\u6807\u5217\u8868\u3002\n- \u5728\u53d7\u652f\u6301\u7684\u6700\u4f4e Node.js \u7248\u672c\u4e0a\u9a8c\u8bc1\u5b89\u88c5\uff0c\u91cd\u70b9\u786e\u8ba4 `node-releases@2.0.54` \u7684 `node &gt;=18` \u8981\u6c42\u662f\u5426\u53ef\u63a5\u53d7\u3002\n- \u91cd\u65b0\u8fd0\u884c Component Governance \u626b\u63cf\uff0c\u786e\u8ba4\u4e24\u4e2a\u9ad8\u5371\u544a\u8b66\u5df2\u5173\u95ed\u4e14\u672a\u5f15\u5165\u65b0\u7684\u6cbb\u7406\u544a\u8b66\u3002\n\n## \u5206\u6790\u8986\u76d6\u8303\u56f4\u4e0e\u622a\u65ad\u8bf4\u660e\n\n- **\u4ee3\u7801 diff \u8986\u76d6\u5b8c\u6574\uff1a** \u6570\u636e\u5305\u6807\u8bb0\u6587\u4ef6 diff \u7684 `truncated` \u4e3a `false`\uff0c\u6574\u4f53 `diffTruncated` \u4e5f\u4e3a `false`\uff1b1 \u4e2a\u53d8\u66f4\u6587\u4ef6\u5747\u6709 diff\uff0c\u5305\u5185\u672a\u62a5\u544a\u5bfc\u51fa\u9519\u8bef\u6216\u8b66\u544a\u3002\u56e0\u6b64\uff0c\u4e0a\u8ff0\u4ee3\u7801\u53d8\u66f4\u5206\u6790\u8986\u76d6\u4e86\u6570\u636e\u5305\u63d0\u4f9b\u7684\u5168\u90e8\u6587\u4ef6\u5dee\u5f02\u3002\n- **PR \u63cf\u8ff0\u5185\u5bb9\u4e0d\u5b8c\u6574\uff1a** \u6570\u636e\u5305\u4e2d\u7684 PR \u63cf\u8ff0\u5728 Browserslist \u4e0a\u6e38\u53d1\u5e03\u8bf4\u660e\u4e2d\u4ee5 `...` \u622a\u65ad\uff0c\u540e\u7eed\u53d1\u5e03\u8bf4\u660e\u4e0d\u5728\u5305\u5185\u3002\u672c\u8bf4\u660e\u53ea\u5f15\u7528\u622a\u65ad\u524d\u660e\u786e\u51fa\u73b0\u7684\u4fee\u590d\u9879\uff0c\u4e0d\u63a8\u65ad\u7f3a\u5931\u90e8\u5206\u3002\n- **\u4e0a\u4e0b\u6587\u9650\u5236\uff1a** \u6570\u636e\u5305\u6ca1\u6709\u63d0\u4f9b\u5b8c\u6574\u7684 `package.json`\u3001Browserslist \u914d\u7f6e\u3001\u6784\u5efa\u811a\u672c\u3001\u6d41\u6c34\u7ebf\u6267\u884c\u7ed3\u679c\u6216\u4ed3\u5e93\u5176\u4ed6\u76ee\u5f55\u5185\u5bb9\uff0c\u56e0\u6b64\u672a\u5bf9\u8fd9\u4e9b\u7f3a\u5931\u5185\u5bb9\u4f5c\u51fa\u5df2\u9a8c\u8bc1\u7ed3\u8bba\u3002\n", "creation_timestamp": "2026-09-09T00:19:56.992246Z"}