<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Vite on 北斗的天地</title>
        <link>https://www.imcry.vip/tags/vite.html</link>
        <description>Recent content in Vite on 北斗的天地</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <lastBuildDate>Wed, 26 Nov 2025 13:31:45 +0800</lastBuildDate><atom:link href="https://www.imcry.vip/tags/vite/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>React 部署在服务器后暴露源码</title>
            <link>https://www.imcry.vip/post/2025-11-26-331.html</link>
            <pubDate>Wed, 26 Nov 2025 13:31:45 +0800</pubDate>
            <guid>https://www.imcry.vip/post/2025-11-26-331.html</guid>
            <description>&lt;img src=&#34;https://www.imcry.vip/cover/cover-4.jpg&#34; alt=&#34;Featured image of post React 部署在服务器后暴露源码&#34; /&gt;&lt;h1 id=&#34;诱因&#34;&gt;&lt;a href=&#34;#%e8%af%b1%e5%9b%a0&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;诱因&#xA;&lt;/h1&gt;&lt;p&gt;默认情况下，Create React App（CRA）或其他构建工具（Vite、Webpack）在执行 build 命令时，会生成 &lt;strong&gt;source map&lt;/strong&gt; 文件&lt;/p&gt;&#xA;&lt;h1 id=&#34;何为-source-map-&#34;&gt;&lt;a href=&#34;#%e4%bd%95%e4%b8%ba-source-map-&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;何为 Source Map ？&#xA;&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;Source Map&lt;/strong&gt; 是一种映射文件（通常是 &lt;code&gt;.map&lt;/code&gt; 文件），它将压缩/编译后的代码（&lt;code&gt;main.js&lt;/code&gt;）映射回原始的源代码（&lt;code&gt;App.jsx&lt;/code&gt;）。它的主要作用是方便调试：即使代码被压缩、混淆或转译（JSX → JS、ES6+ → ES5），开发者依然可以在浏览器中看到原始代码结构。&lt;/p&gt;&#xA;&lt;h1 id=&#34;解决方法&#34;&gt;&lt;a href=&#34;#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%b3%95&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;解决方法&#xA;&lt;/h1&gt;&lt;h2 id=&#34;方法一禁用-source-map-生成&#34;&gt;&lt;a href=&#34;#%e6%96%b9%e6%b3%95%e4%b8%80%e7%a6%81%e7%94%a8-source-map-%e7%94%9f%e6%88%90&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;方法一：禁用 source map 生成&#xA;&lt;/h2&gt;&lt;h3 id=&#34;如果使用的是-create-react-app-cra&#34;&gt;&lt;a href=&#34;#%e5%a6%82%e6%9e%9c%e4%bd%bf%e7%94%a8%e7%9a%84%e6%98%af-create-react-app-cra&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;如果使用的是 Create React App (CRA)&#xA;&lt;/h3&gt;&lt;p&gt;在项目根目录创建一个或修改已有文件 &lt;code&gt;.env.production&lt;/code&gt; ，加入以下内容：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;GENERATE_SOURCEMAP=false&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;重新运行 &lt;code&gt;npm run build&lt;/code&gt;，这样构建出的产物将不包含 &lt;code&gt;.map&lt;/code&gt; 文件，JS 文件末尾也不会有 &lt;strong&gt;sourceMappingURL 注释&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;h3 id=&#34;如果使用的是-vite&#34;&gt;&lt;a href=&#34;#%e5%a6%82%e6%9e%9c%e4%bd%bf%e7%94%a8%e7%9a%84%e6%98%af-vite&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;如果使用的是 Vite&#xA;&lt;/h3&gt;&lt;p&gt;在 &lt;code&gt;vite.config.js&lt;/code&gt; 中配置：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;export&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;default&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;defineConfig&lt;/span&gt;({&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;build&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;sourcemap&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;, &lt;span style=&#34;color:#75715e&#34;&gt;// 关闭 source map&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;});&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;如果使用的是-自定义-webpack-配置&#34;&gt;&lt;a href=&#34;#%e5%a6%82%e6%9e%9c%e4%bd%bf%e7%94%a8%e7%9a%84%e6%98%af-%e8%87%aa%e5%ae%9a%e4%b9%89-webpack-%e9%85%8d%e7%bd%ae&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;如果使用的是 自定义 Webpack 配置&#xA;&lt;/h3&gt;&lt;p&gt;在 &lt;code&gt;webpack.config.prod.js&lt;/code&gt; 中设置：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;module&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;exports&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;devtool&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;, &lt;span style=&#34;color:#75715e&#34;&gt;// 或 &amp;#39;hidden-source-map&amp;#39;（生成但不引用）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;// ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;方法二部署时删除-map-文件&#34;&gt;&lt;a href=&#34;#%e6%96%b9%e6%b3%95%e4%ba%8c%e9%83%a8%e7%bd%b2%e6%97%b6%e5%88%a0%e9%99%a4-map-%e6%96%87%e4%bb%b6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;方法二：部署时删除 .map 文件&#xA;&lt;/h2&gt;&lt;p&gt;如果无法修改构建配置，也可以在部署脚本中手动删除：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 构建后删除所有 .map 文件&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rm build/static/**/*.map&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;方法三通过服务器配置阻止访问-map-文件&#34;&gt;&lt;a href=&#34;#%e6%96%b9%e6%b3%95%e4%b8%89%e9%80%9a%e8%bf%87%e6%9c%8d%e5%8a%a1%e5%99%a8%e9%85%8d%e7%bd%ae%e9%98%bb%e6%ad%a2%e8%ae%bf%e9%97%ae-map-%e6%96%87%e4%bb%b6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;方法三：通过服务器配置阻止访问 .map 文件&#xA;&lt;/h2&gt;&lt;p&gt;在 Nginx 中添加：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;location ~ \.map$ {&#xA;  deny all;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这样即使文件存在，用户也无法通过浏览器访问&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
