mah*_*han 19 javascript reactjs vite
Vite默认在源码目录下生成文件dist
。
my-app/\n\xe2\x94\x9c\xe2\x94\x80 node_modules/\n\xe2\x94\x9c\xe2\x94\x80 dist/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 assets/\n| | | index.js\n| | | index.css \n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 index.html\n\xe2\x94\x9c\xe2\x94\x80 index.html\n\xe2\x94\x9c\xe2\x94\x80 main.js\n\xe2\x94\x9c\xe2\x94\x80 style.scss\n\xe2\x94\x9c\xe2\x94\x80 package.json\n
Run Code Online (Sandbox Code Playgroud)\n我需要为js
和css
下的文件创建一个不同的文件夹assets
。换句话说,我需要分别将js
和css
filer 放在/assets/js
和/assets/css
文件夹下。
my-app/\n\xe2\x94\x9c\xe2\x94\x80 node_modules/\n\xe2\x94\x9c\xe2\x94\x80 dist/\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80 assets/\n| | |-js/\n| | | index.js\n| | |-css/\n| | | index.css \n
Run Code Online (Sandbox Code Playgroud)\n这是我的配置文件。
\nimport { defineConfig } from "vite";\nimport react from "@vitejs/plugin-react";\nimport svgrPlugin from "vite-plugin-svgr";\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n base: "./",\n plugins: [react(), svgrPlugin()],\n server: {\n open: true,\n proxy: {\n "/base": {\n target: "http://localhost:19000",\n changeOrigin: true,\n rewrite: (path) => path.replace(/^\\/base/, ""),\n },\n },\n },\n});\n\n
Run Code Online (Sandbox Code Playgroud)\n怎么做呢?
\nton*_*y19 54
输出文件名在 Rollup 中配置为build.rollupOptions
:
设置output.assetFileNames
以配置资产文件名(对于媒体文件和样式表)。
设置output.chunkFileNames
以配置供应商块文件名。
设置output.entryFileNames
配置index.js
文件名。
// vite.config.js\nimport { defineConfig } from \'vite\';\nimport react from \'@vitejs/plugin-react\';\n\n// https://vitejs.dev/config/\nexport default defineConfig({\n plugins: [react()],\n build: {\n rollupOptions: {\n output: {\n 1\xef\xb8\x8f\xe2\x83\xa3\n assetFileNames: (assetInfo) => {\n let extType = assetInfo.name.split(\'.\').at(1);\n if (/png|jpe?g|svg|gif|tiff|bmp|ico/i.test(extType)) {\n extType = \'img\';\n }\n return `assets/${extType}/[name]-[hash][extname]`;\n },\n 2\xef\xb8\x8f\xe2\x83\xa3\n chunkFileNames: \'assets/js/[name]-[hash].js\',\n 3\xef\xb8\x8f\xe2\x83\xa3\n entryFileNames: \'assets/js/[name]-[hash].js\',\n },\n },\n },\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n
如果你@font-face
在你的 css 文件中使用它,它就会聚集起来。您可能需要将字体与 css 文件放在同一文件夹中。
我用过woff
和woff2
字体
rollupOptions: {
output: {
assetFileNames: (assetInfo) => {
var info = assetInfo.name.split(".");
var extType = info[info.length - 1];
if (/png|jpe?g|svg|gif|tiff|bmp|ico/i.test(extType)) {
extType = "img";
} else if (/woff|woff2/.test(extType)) {
extType = "css";
}
return `static/${extType}/[name]-[hash][extname]`;
},
chunkFileNames: "static/js/[name]-[hash].js",
entryFileNames: "static/js/[name]-[hash].js",
},
}
Run Code Online (Sandbox Code Playgroud)
小智 5
谢谢tony19,这也能正常工作,但我有构建错误: [vite:build-html] assetInfo.name.split(...).at 不是一个函数
我简单的改变
assetInfo.name.split('.').at(1);
Run Code Online (Sandbox Code Playgroud)
到
assetInfo.name.split('.')[1];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
47091 次 |
最近记录: |