<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: programmer lld</title>
    <description>The latest articles on DEV Community by programmer lld (@programmerlld).</description>
    <link>https://dev.to/programmerlld</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F854709%2F7dba3279-fe64-4e3f-b9c1-60fef9a1eb54.png</url>
      <title>DEV Community: programmer lld</title>
      <link>https://dev.to/programmerlld</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/programmerlld"/>
    <language>en</language>
    <item>
      <title>vite-plugin-html和vite-plugin-static-copy 一起使用有bug</title>
      <dc:creator>programmer lld</dc:creator>
      <pubDate>Wed, 12 Nov 2025 01:06:50 +0000</pubDate>
      <link>https://dev.to/programmerlld/vite-plugin-htmlhe-vite-plugin-static-copy-qi-shi-yong-you-bug-jbh</link>
      <guid>https://dev.to/programmerlld/vite-plugin-htmlhe-vite-plugin-static-copy-qi-shi-yong-you-bug-jbh</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;publicDir: VITE_APP_ENV === "production" ? false :"public",
plugins: createVitePlugins(env, command === "build",views),

import vue from "@vitejs/plugin-vue";
import createPublicFilter from './filter-public';
import createEditHtml from './edit-html'

export default function createVitePlugins(viteEnv, isBuild = false, buildList) {
  const vitePlugins = [vue()];
  vitePlugins.push(createEditHtml(viteEnv));
  isBuild &amp;amp;&amp;amp; vitePlugins.push(createPublicFilter(viteEnv));
  return vitePlugins;
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { viteStaticCopy } from 'vite-plugin-static-copy';
import { publics, getConfigByKey } from '../config/system'

export default function createPublicFilter(env) {
  const { VITE_BUILD_PROJECT } = env
  const systemPublics = getConfigByKey(publics,VITE_BUILD_PROJECT);
  return  viteStaticCopy({
    targets: systemPublics
  })
}

import { createHtmlPlugin } from 'vite-plugin-html';
import { html, getConfigByKey } from '../config/html'

export default function createEditHtml(env) {
  const { VITE_BUILD_PROJECT } = env
  const systemHtml = getConfigByKey(html,VITE_BUILD_PROJECT);
  return  createHtmlPlugin(systemHtml)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//index.html 文件配置
const defaultHtml = {
  minify: true,
};

const html = {
  license: {
    inject: {
      data: {
        injectScript :`  &amp;lt;script src="/drag/js/jquery.min.js"&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script src="/drag/js/draggabilly.pkgd.min.js"&amp;gt;&amp;lt;/script&amp;gt;`
      },
    }
  },
};

function getConfigByKey(routers, projectKey) {
  if (!routers || typeof routers !== "object" || Array.isArray(routers)) {
    return { ...defaultHtml };
  }
  if (typeof projectKey !== "string" || projectKey.trim() === "") {
    return { ...defaultHtml };
  }
  const normalizedKey = projectKey.trim().toLowerCase();
  const baseConfig = { ...defaultHtml };
  if (routers.hasOwnProperty(normalizedKey)) {
    const projectConfig = routers[normalizedKey];
    return {
      ...baseConfig,
      ...projectConfig,
      inject: {
        ...baseConfig.inject,
        ...projectConfig.inject,
      },
    };
  }
  return baseConfig;
}

export { html, getConfigByKey };


// public 是否打包配置
const defaultKey = [
  {
    src: "public/html",
    dest: "",
  },
  {
    src: "public/favicon.ico",
    dest: "",
  },
];

const publics = {
  license: [
    {
      src: "public/drag",
      dest: "",
    },
  ],
  ngbseal: [
    {
      src: "public/onlineSeal",
      dest: "",
    },
    {
      src: "public/sign",
      dest: "",
    },
  ],
  sdjnseal: [
    {
      src: "public/sign",
      dest: "",
    },
  ],
};

function getConfigByKey(routers, projectKey) {
  if (!routers || typeof routers !== "object") {
    return [];
  }
  if (!projectKey || typeof projectKey !== "string") {
    return [];
  }
  const normalizedKey = projectKey.trim().toLowerCase();
  if (Object.prototype.hasOwnProperty.call(routers, normalizedKey)) {
    return [...defaultKey, ...routers[normalizedKey]];
  }
  return [...defaultKey];
}

export { publics, getConfigByKey };

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;我的大概配置是以上，打包没有问题，但是在开发环境运行时会出现public内容引用404问题&lt;/p&gt;

</description>
      <category>vite</category>
      <category>插件</category>
    </item>
  </channel>
</rss>
