<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>摇树 on PlumePHP</title><link>https://plumephp.com/tags/%E6%91%87%E6%A0%91/</link><description>Recent content in 摇树 on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Tue, 29 Sep 2026 11:00:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/tags/%E6%91%87%E6%A0%91/index.xml" rel="self" type="application/rss+xml"/><item><title>Tree-shaking 深入：摇树原理、副作用边界与产物瘦身</title><link>https://plumephp.com/vite-tree-shaking-deep-dive/</link><pubDate>Tue, 29 Sep 2026 11:00:00 +0800</pubDate><guid>https://plumephp.com/vite-tree-shaking-deep-dive/</guid><description>&lt;h2 id="引言"&gt;引言&lt;/h2&gt;
&lt;p&gt;「打包出来的文件怎么这么大」往往是同一个原因：&lt;strong&gt;Tree-shaking 没生效&lt;/strong&gt;。摇树（Tree-shaking）是 Rollup/Vite 的核心优化，能把「没用的导出」从产物里删掉，但它的生效有一整套前提：ESM 的静态分析、副作用标记、package.json 字段、代码的可摇性。本文讲透摇树：先讲原理（按使用标记 + 删除未用）、为什么必须 ESM（静态可分析，CommonJS 摇不动）、副作用标记 sideEffects（&lt;code&gt;&amp;quot;sideEffects&amp;quot;: false&lt;/code&gt; 让包可摇）、package.json 的 exports 与 module 字段（入口该指向 ESM）、摇树的边界（动态导入/运行时/条件导入摇不掉）、常见摇树失败与排查（副作用误判/入口错误/黑魔法）、库作者的摇树优化（怎么写可摇的库）、与代码分割的配合（摇树 + 分割的组合策略）、最后是验证摇树效果（产物分析看包体）。&lt;/p&gt;</description></item></channel></rss>