vite项目打包资源分配目录

vite项目打包资源分配目录

vite项目打包后所有资源都放在了assets文件夹中,像传统工程一样分为不同的文件夹,js放js文件夹,css放css文件夹,图片放img文件夹
vite无论是当做是脚手架还是构建工具,内部实现原理就是Rollup和esbuild
Rollup会深度影响打包结果,如何在vite里面配置Rollup,Rollup相关配置 

  • vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'


export default defineConfig({
  plugins: [
    vue(),
  ],
  build: {
    rollupOptions:{
      output: {
        entryFileNames: 'js/[name].js',//入口文件
        // entryFileNames: 'js/[name]-[hash].js',//入口文件
        chunkFileNames: 'js/[name].js',//分包引入文件
        // chunkFileNames: 'js/[name]-[hash].js',//分包引入文件
        // assetFileNames: '[ext]/[name]-[hash].[ext]',//静态文件
        assetFileNames(assetInfo){
          console.log(assetInfo)
          //文件名称
          if (assetInfo.name.endsWith('.css')) {
            return 'css/[name].css'
            // return 'css/[name]-[hash].css'
          }
          //图片名称
          //定义图片后缀
          const imgExts = ['.png', '.jpg', '.jpeg', '.webp', '.gif', '.svg','.ico']
          if(imgExts.some(ext => assetInfo.name.endsWith(ext))){
            return 'imgs/[name].[ext]'
            // return 'imgs/[name]-[hash].[ext]'
          }
          //剩余资源文件
          return 'assets/[name].[ext]'
          // return 'assets/[name]-[hash].[ext]'
        }
      },
    },
  },
 
});

### Vite 中的手动包策略 在 Vite 项目中,`rollupOptions.output.manualChunks` 可用于定义自定义的包逻辑[^1]。此功能允许开发者指定哪些模块应该被打包在一起或者打包。 对于 `node_modules` 的处理,可以通过配置 `manualChunks` 来控制不同类型的依赖项如何被打包。具体来说,如果希望某些特定的第三方库(比如 React 或者 Vue)被独立打包成单独的文件,而其他所有的依赖则合并到一起形成一个较大的 vendor bundle,则可以在 vite.config.js 文件里设置如下: ```javascript export default defineConfig({ build: { rollupOptions: { output: { manualChunks(id) { if (id.includes('node_modules')) { const packageName = id.toString().split('node_modules/')[1].split('/')[0]; switch(packageName){ case 'react': return 'chunk-react'; case 'vue': return 'chunk-vue'; // Add more cases as needed for other libraries you want to split out. default: return 'vendor'; // All others go into a single vendor file. } } }, }, }, }, }); ``` 上述代码会检查每一个来自 `node_modules` 下面的模块 ID,并依据不同的包名将其配给相应的 chunk 名称。例如,“react” 和 “vue” 将别创建名为 `chunk-react` 和 `chunk-vue` 的 chunks;而对于不属于这些特例外的所有剩余依赖,默认情况下会被放置在一个叫做 `vendor` 的公共 chunk 中[^2]。 此外,在生产环境中启用 gzip 压缩能够进一步减少资源体积并提升加载性能[^3]。 #### 注意事项 - 上述方法适用于那些想要更细粒度地管理第三方库打包方式的应用程序。 - 对于大多数应用场景而言,默认的自动优化已经足够好用,只有当遇到特殊需求时才考虑手动干预。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值