如何用Vite将CSS文件打包到指定路径(JS正常,CSS异常)
Laravel 5.2升级至Laravel 10:Vite配置保留原有文件结构问题
我正在将Laravel 5.2项目手动升级至Laravel 10,首次使用Vite,希望保留原有文件结构。JS文件已能正确打包到指定路径,但CSS文件无法实现相同效果,恳请帮忙解决。
更新内容!!!
我尝试了下方配置,JS文件已放入正确的文件夹结构,但CSS文件无法正常工作:
import { defineConfig } from "vite"; import laravel from "laravel-vite-plugin"; import path from "path"; export default defineConfig({ build: { outDir: "public/build/assets", rollupOptions: { input: { "js/app": path.resolve(__dirname, "resources/js/app.js"), "js/bootstrap": path.resolve( __dirname, "resources/js/bootstrap.js" ), "js/vendor": path.resolve(__dirname, "resources/js/vendor.js"), "js/sockets/all": path.resolve( __dirname, "resources/js/sockets/all.js" ), "js/layouts/smart": path.resolve( __dirname, "resources/js/layouts/smart.js" ), "js/libraries/cs": path.resolve( __dirname, "resources/js/libraries/cs.js" ), "js/libraries/skin": path.resolve( __dirname, "resources/js/libraries/skin.js" ), "js/libraries/vertex": path.resolve( __dirname, "resources/js/libraries/vertex.js" ), "js/libraries/widget": path.resolve( __dirname, "resources/js/libraries/widget.js" ), "js/app/layouts/bxslider": path.resolve( __dirname, "resources/js/app/layouts/bxslider.js" ), "js/app/layouts/page": path.resolve( __dirname, "resources/js/app/layouts/page.js" ), "js/app/layouts/portal": path.resolve( __dirname, "resources/js/app/layouts/portal.js" ), "js/app/modules/admin/managing/listing": path.resolve( __dirname, "resources/js/app/modules/admin/managing/listing.js" ), "js/app/modules/admin/member/member": path.resolve( __dirname, "resources/js/app/modules/admin/member/member.js" ), "js/config/core/dev/app": path.resolve( __dirname, "resources/js/config/core/dev/app.js" ), "css/app": path.resolve(__dirname, "resources/css/app.css"), "css/vendor": path.resolve( __dirname, "resources/css/vendor.css" ), "css/app/layouts/cms": path.resolve( __dirname, "resources/css/app/layouts/cms.css" ), "css/app/layouts/auth": path.resolve( __dirname, "resources/css/app/layouts/auth.css" ), "css/app/layouts/page": path.resolve( __dirname, "resources/css/app/layouts/page.css" ), "css/app/layouts/admin": path.resolve( __dirname, "resources/css/app/layouts/admin.css" ), "css/app/layouts/portal": path.resolve( __dirname, "resources/css/app/layouts/portal.css" ), }, output: { entryFileNames: (chunkInfo) => { if (chunkInfo.name.startsWith("js/")) { return `${chunkInfo.name}.js`; } if (chunkInfo.name.startsWith("css/")) { return `${chunkInfo.name}.css`; } return `${chunkInfo.name}.js`; }, chunkFileNames: (chunkInfo) => { if (chunkInfo.name.startsWith("js/")) { return `${chunkInfo.name}.js`; } if (chunkInfo.name.startsWith("css/")) { return `${chunkInfo.name}.css`; } return `${chunkInfo.name}.js`; }, assetFileNames: (assetInfo) => { if (assetInfo.name?.endsWith(".css")) { if (assetInfo.name.includes("layouts")) { return `css/app/layouts/[name].[hash][extname]`; } return `css/[name].[hash][extname]`; } if (assetInfo.name?.endsWith(".js")) { return `js/[name].[hash][extname]`; } return `assets/[name].[hash][extname]`; }, sourcemap: true, }, }, }, plugins: [ laravel({ input: [ "resources/css/app.css", "resources/css/vendor.css", "resources/css/app/layouts/cms.css", "resources/css/app/layouts/auth.css", "resources/css/app/layouts/page.css", "resources/css/app/layouts/admin.css", "resources/css/app/layouts/portal.css", "resources/js/app.js", "resources/js/bootstrap.js", "resources/js/vendor.js", "resources/js/sockets/all.js", "resources/js/layouts/smart.js", "resources/js/libraries/cs.js", "resources/js/libraries/skin.js", "resources/js/libraries/vertex.js", "resources/js/libraries/widget.js", "resources/js/app/layouts/bxslider.js", "resources/js/app/layouts/page.js", "resources/js/app/layouts/portal.js", "resources/js/app/modules/admin/managing/listing.js", "resources/js/app/modules/admin/member/member.js", "resources/js/config/core/dev/app.js", ], refresh: true, }), ], });
旧问题!!!
我希望用Vite实现如下打包效果:
resources/css/app.css打包到public/build/assets/css/app.cssresources/css/admin/member/index.css打包到public/build/assets/css/admin/member/index.css- JS文件遵循相同的路径规则
但我最初尝试的配置会把所有JS和CSS文件都打包到public/build/assets文件夹中,配置代码如下:
import { defineConfig } from "vite"; import laravel from "laravel-vite-plugin"; export default defineConfig({ build: { outDir: "public/build", }, plugins: [ laravel({ input: [ "resources/css/app.css", "resources/css/vendor.css", "resources/css/app/layouts/cms.css", "resources/css/app/layouts/auth.css", "resources/css/app/layouts/page.css", "resources/css/app/layouts/admin.css", "resources/css/app/layouts/portal.css", "resources/js/app.js", "resources/js/bootstrap.js", "resources/js/vendor.js", "resources/js/sockets/all.js", "resources/js/layouts/smart.js", "resources/js/libraries/cs.js", "resources/js/libraries/skin.js", "resources/js/libraries/vertex.js", "resources/js/libraries/widget.js", "resources/js/app/layouts/bxslider.js", "resources/js/app/layouts/page.js", "resources/js/app/layouts/portal.js", "resources/js/app/modules/admin/managing/listing.js", "resources/js/app/modules/admin/member/member.js", "resources/js/config/core/dev/app.js", ], refresh: true, }), ], });
内容的提问来源于stack exchange,提问作者Ashley Mok
相关产品推荐
相关产品推荐

