Vue 3 + Vite 多项目多 dist 打包操作指南

在前端开发中,Vue 3 和 Vite 已经成为了越来越受欢迎的工具。其中,Vite 作为一个快速构建工具,与 Vue 3 结合使用,可以提高开发效率和性能。在实际项目中,一个项目会包含多个子项目,需要达成多个子项目的dist包。本文将介绍如何使用 Vue 3 + Vite 搭建多项目环境,并在打包时生成多个 dist 包。

1. 创建一个主项目环境

使用命令,快速创建一个住项目的环境

npm create vue@latest

2. 子项目目录

在这里插入图片描述

3. 子项目文件

在两个子项目中分别创建App.vue和main.js文件
在这里插入图片描述
我这里的代码直接使用vue创建时的代码,需要改的地方是资源,文件的路径
App.vue


```javascript
<script setup>
import { RouterLink, RouterView } from 'vue-router'
import HelloWorld from '../../components/HelloWorld.vue'
</script>

<template>
  <header>
    <img alt="Vue logo" class="logo" src="../../assets/logo.svg" width="125" height="125" />

    <div class="wrapper">
      <HelloWorld msg="You did it!" />

      <nav>
        <RouterLink to="/">Home</RouterLink>
        <RouterLink to="/about">About</RouterLink>
      </nav>
    </div>
  </header>

  <RouterView />
</template>

<style scoped>
header {
  line-height: 1.5;
  max-height: 100vh;
}

.logo {
  display: block;
  margin: 0 auto 2rem;
}

nav {
  width: 100%;
  font-size: 12px;
  text-align: center;
  margin-top: 2rem;
}

nav a.router-link-exact-active {
  color: var(--color-text);
}

nav a.router-link-exact-active:hover {
  background-color: transparent;
}

nav a {
  display: inline-block;
  padding: 0 1rem;
  border-left: 1px solid var(--color-border);
}

nav a:first-of-type {
  border: 0;
}

@media (min-width: 1024px) {
  header {
    display: flex;
    place-items: center;
    padding-right: calc(var(--section-gap) / 2);
  }

  .logo {
    margin: 0 2rem 0 0;
  }

  header .wrapper {
    display: flex;
    place-items: flex-start;
    flex-wrap: wrap;
  }

  nav {
    text-align: left;
    margin-left: -1rem;
    font-size: 1rem;

    padding: 1rem 0;
    margin-top: 1rem;
  }
}
</style>

main.js

import '../../assets/main.css'

import { createApp } from 'vue'
import { createPinia } from 'pinia'

import App from './App.vue'
import router from '../../router'

const app = createApp(App)

app.use(createPinia())
app.use(router)

app.mount('#app')

然后在于index.html同级的地方添加两个对应子项目 的html,如果项目的title,图标一致,可以直接用index.html,不需要新建html文件
projecta.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>项目Ap</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/projects/projectA/main.js"></script>
  </body>
</html>

在这里插入图片描述

4. 配置多个 dist 包

新建projectConfig.js,存放子项目的入口配置

export const configMap = {
    projectA:{
      minify: true,
      pages: [
          {
              filename: 'projecta', // filename 默认是template文件名,就是beijing.html
              entry: 'src/projects/projectA/main.js',
              template: 'projecta.html',
          },   
      ],
    },
    projectB:{
      minify: true,
      pages: [
          {
              filename: 'projectb',
              entry: 'src/projects/proiectB/main.js',
              template: 'projectb.html',
          },
      ],
    }
  }
  

然后修改vite.config.js如下:

import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { createHtmlPlugin } from 'vite-plugin-html';
import { resolve } from 'node:path';
import { configMap } from './projectConfig'

const projectName = process.env.PROJECT_NAME
export default defineConfig({
    base: './',             // 方便打包后预览
    publicDir: 'public',    // 默认 public
    plugins: [
        vue(),
        createHtmlPlugin(configMap[projectName])
    ],
    resolve:{
      alias:{
        '@':resolve(__dirname,'src')
      }
    },
    build: 
        {
            cssCodeSplit: true,
            emptyOutDir: true,
            sourcemap: false,
            assetsDir: 'assets', // 默认 assets
            outDir: `dist-${projectName}`, // 输出到dist
            rollupOptions: {
                input: {
                },
                output: {
                    compact: true,
                    entryFileNames: "assets/js/[name]-[hash].js",
                    chunkFileNames: "assets/js/[name]-[hash].js",
                    assetFileNames: "assets/[ext]/[name].[ext]",
                }
            }
        },
        
})

package.json文件也需要重新修改scripts部分,主要实现npm run build打出多个dist包
package.json

  "scripts": {
    "dev": "vite",
    "build": "node dynamic-build-all.js",
    "preview": "vite preview"
  },

dynamic-build-all.js:


import { projects } from './projects.js';
import { execSync } from 'child_process';
const projectNames = Object.keys(projects);
for (const projectName of projectNames) {
  console.log(`Building ${projectName}...`);
  const command = projects[projectName].buildCommand;
  execSync(command, { stdio: 'inherit' });
}

projects.js存放项目配置

export const projects = {
    projectA: {
      name: "projectA",
      buildCommand: "cross-env PROJECT_NAME=projectA vite build",
      desc: "协议一"
    },
    projectB: {
      name: "projectB",
      buildCommand: "cross-env PROJECT_NAME=projectB vite build",
      desc: "协议二"
    }
}

5. 打包操作

多个包的配置已经完善,直接执行打包命令即可

npm run build

在这里插入图片描述
通过以上操作,我们可以轻松地在 Vue 3 + Vite 环境下管理多个项目,并通过配置不同的 Vite 配置文件来生成多个独立的 dist 包。这样,我们可以更加灵活地进行项目管理和部署。希望本文能够帮助您顺利完成多项目多 dist 打包操作!祝您编程愉快!🚀👨‍💻🌟

  • 18
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 Vue 3 + Vite 项目构建,你可以按照以下步骤进行操作: 1. 确保你的开发环境已经安装了 Node.js。你可以在终端中运行 `node -v` 来检查是否已安装 Node.js,并确保其版本大于等于 12.0.0。 2. 安装 Vue CLI,它是一个官方提供的脚手架工具,用于创建和管理 Vue.js 项目。在终端中运行以下命令来全局安装 Vue CLI: ``` npm install -g @vue/cli ``` 3. 创建一个新的 Vue 3 项目。在终端中运行以下命令: ``` vue create my-project ``` 在创建过程中,你会被提示选择预设配置。选择 "Manually select features",然后按下空格键选择 "Choose Vue version"。选择 Vue 3.x 版本。 4. 进入到项目目录中: ``` cd my-project ``` 5. 安装 Vite。在终端中运行以下命令: ``` npm install -D vite ``` 6. 修改项目配置文件 `package.json`,将 `scripts` 中的 `serve` 和 `build` 命令替换为 Vite 的命令: ```json "scripts": { "dev": "vite", "build": "vite build", "serve": "vite preview" } ``` 7. 使用 Vite 运行项目。在终端中运行以下命令: ``` npm run dev ``` 这将启动开发服务器,你可以在浏览器中访问 `http://localhost:3000` 来预览你的 Vue 3 + Vite 项目。 8. 构建项目。在终端中运行以下命令: ``` npm run build ``` 这将生成一个生产优化的构建版本,可以在 `dist` 目录中找到。 这样,你就成功使用 Vue 3 + Vite 构建了一个项目。你可以根据自己的需求进行开发和调整。希望对你有帮助!如有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值