# divue **Repository Path**: geeksdidi/divue ## Basic Information - **Project Name**: divue - **Description**: 从零搭建一个vue3 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-05-08 - **Last Updated**: 2024-11-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 生成配置信息搭建Monorepo环境 什么是Monorepo? 简单来说Monorepo 把所有项目的所有代码统一维护在一个单一的代码版本库中。vue3中使用pnpm来实现Monorepo ## 安装pnpm * 全局安装pnpm ``` npm install pnpm -g ``` * 初始化配置文件 有的vscode中可能执行pnpm脚本被禁止,在终端执 ``` Set-ExecutionPolicy -Scope CurrentUser ``` 然后提供参数值输入:RemoteSigned 即可 注意:pnpm支持node版本为14.19,注意自己的node版本 ``` pnpm init ``` * 创建npmrc文件 ## 搭建Monorepo环境 pnpm 中只需要配置一个pnpm-workspace.yaml即可 ``` packages: - 'packages/*' ``` 上面表示管理的包在packages文件下,所以需要新建packages文件夹,后续的模块包都放在这下面即可 ## 安装所需依赖 * typescript 因为vue3是基于typescript开发的,所以需要安装typescript * minimist minimist是一个用于处理命令行调用node指令时,处理node之后的一系列参数的模块。后续会用到 * esbuild esbuild是一个类似webpack构建工具。它的构建速度是 webpack 的几十倍。开发环境通常用它来构建 统一安装 ``` pnpm install typescript minimist esbuild -w ``` 注意-w,需要将这些依赖安装在根目录下 ## 填充packages 在packages下分别新建reactivity和shared文件夹并在其文件夹下分别执行 ``` pnpm init ``` 修改两个文件下package.json名字为@xx/xxx形式 自定义参数buildOptions例如: ``` { "name": "@divue/reactivity", "version": "1.0.0", "description": "", "main": "index.ts", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "buildOptions": { "name": "VueReactivity", "formats": [ "esm", "cjs", "global" ] }, "keywords": [], "author": "", "license": "ISC" } ``` ## 本地包引用 如果想在shared引reactivity用可以 ``` import {xx} from '@divue/reactivity' ``` 此时直接引用会找不到@divue/shared;所以需要生成ts配置文件 根目录执行 ``` pnpm tsc --init ``` 生成tsconfig.json 进行别名配置(具体配置已经上传至git) ``` "paths": { "@divue/*": ["packages/*/src"] } ``` 这样如果引入@divue/shared则会直接找到packages/shared/src中 注意:此时还不能直接运行代码,需要打包构建才能运行