- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
最近需要用到多包管理 monorepo 开发新项目,所以提前预研一下项目搭建.
monorepo(monolithic repository)是一种项目架构,就是用一个仓库管理多个项目(应用,库),react和babel的源码仓库都是用这种方式在管理.
优缺点略过,可以参考: 精读《Monorepo 的优势》 .
因为不需要 npm 发包之类的,所以没用 lerna,就用 yarn workspace 就可以解决了,技术组合: yarn workspace + vite + typescript + react .
通过 yarn workspace 可以管理 monorepo 的共同依赖包 。
使用命令创建一个根目录项目 workspace 。
yarn create vite
这样我们得到一个简单的基于 vite+react+ts 的脚手架项目,但其实我们只需要 package.json 、 gitignore 、 tsconfig.json 、 tsconfig.node.json 四个文件,其他的都删掉.
在 workspace 的 package.json 中加入配置:
"workspaces": [
"packages/*"
],
这样便可以声明我们使用 monorepo 的方式管理 packages 下的多个包.
在 workspace 根目录下创建 packages 文件夹,然后在 packages 文件夹下运行命令 。
yarn create vite
创建多个子项目,如:@hanzilu/root、@hanzilu/mobile、@hanzilu/common.
此时我们直接在 workspace 运行命令安装 root 项目的依赖:
yarn workspace @hanzilu/root install
我们会发现安装的依赖包直接安装在了 workspace 下的 node_modules 中,而不是在 @hanzilu/root 项目下.
在 workspace 下运行命令:
yarn workspace @hanzilu/root dev
就可以启动 root 文件夹下的项目了.
不过我们不可能一个个去安装所有子项目,那么就直接在 workspace 下运行命令即可:
yarn install
更多的一些常用命令:
上面的项目中并不是共用同一个 typescript 配置的,所以我们需要删除各个子项目中的 tsconfig.json 和 tsconfig.node.json .
然后我们修改 workspace 下的 tsconfig.json 中 include 为:
"include":["packages/**/src"],
也就是把 typescript 配置应用到这个目录下.
同样的 tsconfig.node.json 中的配置改为:
"include": ["packages/**/vite.config.ts"]
我们使用多包管理,可能是两个不同的项目比如 @hanzilu/root 和@hanzilu/ mobile,想要使用统一的组件或者方法,这个方法在我们的 @hanzilu/common 中.
那么首先改造一下我们的 common 项目,在 package.json 中将添加入口:
"main":"./src/main.tsx",
然后将 main.tsx 内容改为:
const HelloWorld: React.FC = () => {
return <div className="App">HelloWorld</div>;
};
export default HelloWorld;
现在我们的 common 就是个很简单的 HelloWorld 组件.
那么我们怎么去让@hanzilu/root 能够使用到这个组件呢?
我们就像安装依赖库一样运行命令:
yarn workspace @hanzilu/root add @hanzilu/common@0.0.1
引用的时候也和依赖库一样:
import HelloWorld from "@hanzilu/common";
但是到了这一步你的 typescript 提示会报错,你需要在 workspace 下的 tsconfig.json 加上这段配置:
"compilerOptions": {
//...
"baseUrl": "./",
"paths": {
"@hanzilu/*": ["packages/*"]
},
}
去告诉 typescript,@hanzilu/系列的包实际上是用的本地的 packages 目录下的内容.
至此,我们就可以正常进行项目的开发了.
在进行上面操作的时候,应该会明显感觉到命令行太长,输入太繁琐.
所以我们需要在 package.json 中对常用的命令,进行简化:
"root": "yarn workspace @hanzilu/root", // 简化命令
"mobile":"yarn workspace @hanzilu/mobile",
"dev:root": "yarn root dev", // 开发root
"dev:mobile": "yarn mobile dev",
"build:root": "yarn root build", // 构建root
"build:mobile": "yarn mobile build"
总体而言没遇到什么大问题,挺好用的,可能也跟刚接触不知坑之深浅有关.
关于 react 和 vite 的部分直接省略了,如果想要了解可以查看我的这篇文章: Vite+React 搭建开发构建环境实践 .
最后此篇关于monorepo实践:yarnworkspace+vite+typescript+react的文章就讲到这里了,如果你想了解更多关于monorepo实践:yarnworkspace+vite+typescript+react的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我将 Vite ( https://vitejs.dev/ ) 用于静态多页网站。 这是构建命令后的默认项目文件夹结构。 my-app/ ├─ node_modules/ ├─ dist/ │ ├─
Formatjs 提供了一个 babel plugin对于使用 react-intl 注入(inject)消息 ID 并删除 description 的模块。我如何将它与 Vite 一起使用? 最佳答
我正在尝试编写一个 chrome 扩展程序。我找到了一种方法来创建多个页面和后台脚本,但后台脚本包含哈希并且是放入 dist/assets 文件夹中。我只想输出“dist/background.js”
我使用 vite 创建了一个项目模板。 在package.json下,我看到了这个; "scripts": { "dev": "vite", "build": "vue-tsc -
我正在尝试从 Create React App 迁移到 Vite.js,但我遇到了导入别名的问题。 在 Create React App 中,我有一个 jsconfig.json 文件,其中 comp
在我的 Vite 项目中使用以下 .env: # To prevent accidentally leaking env variables to the client, only # variabl
如果您尝试使用 Vite 将 dayjs 导入到 Vue/React 应用程序中,您会发现它失败。 Vite 仅适用于 ESM 模块。 最佳答案 我发现你需要直接导入esm模块,然后它才能在Vite
我最近试图在Vercel上部署一个SvelteKit项目库,但由于Vercel构建应用程序的方式,我编写的传递实用程序类并以编程方式调用TailWind的API端点无法工作。它在我的本地环境中运行得很
我最近试图在Vercel上部署一个SvelteKit项目库,但由于Vercel构建应用程序的方式,我编写的传递实用程序类并以编程方式调用TailWind的API端点无法工作。它在我的本地环境中运行得很
我正在使用 Vue 和 vite 通过获取 API 来练习 Web 应用程序的工作流程,遵循此 tutorial .末yarn dev命令,我收到错误。我试过了: 直接克隆project并运行相同的命
我有一个用 React JS 构建的网站,我使用 Vite 作为 JS Bundler。问题是,当我在 Netlify 上部署网站并重新加载页面时,它显示“找不到页面”。 我尝试添加更改 vite.c
我是 vite 新手,首先,我实际上并不知道我需要什么样的结构。 我需要构建多个应用,但其中一些依赖于相同的组件。 到目前为止它运行良好,但我认为混合了一些东西
我正在使用 Vue + Vite + TS,并且正在构建一些我想在其他地方构建和导入的库。 关键是我使用 dotenv 设置了一些环境变量,因此我可以使用 import.meta.env.MY_VAR
我正在参加「掘金·启航计划」 项目背景 vite出现之后,迅速带走了一大波webpack的使用者,即使是对打包工具不熟悉的小白,也能很快感受到两者的区别——vite快的多!
分析 version:2.3.7。本文将整理 vite 静态资源的几种处理方式,应用案例和源码分析相结合,带你 10mins 通关该模块知识~ 一.处理的五种方式 (1)
博客园 @四季留歌 项目工程下载(腾讯微云):点我 缺点:必须安装 cesium 依赖和几个 vite 插件,起项目时略微麻烦,部署 cdn 较麻烦 优点:打包速度起飞,构建后的成果代码网络传输效率最
我有一个 vite 3 项目。我怎样才能将它更新到 vite 4?我需要从头开始创建一个新项目并复制文件吗?或者我只是更新 package.json 中的版本号,删除 node_modules 文件夹
我想通过 vite 获取 npm 模块中的原始 css 字符串。根据 vite 手册, https://vitejs.dev/guide/assets.html#importing-asset-as-
我正在尝试让 https 在我的 Vite 本地主机环境中工作。 Chrome 显示无效证书错误。 我已经像这样设置了我的 vite.config.js 文件: import { defineConf
您好,我已经安装了新的应用程序 vue3 typescript + vite,我在构建图像并旋转容器后遇到了问题。我无法访问 localhost:3000,浏览器只会显示 The connection
我是一名优秀的程序员,十分优秀!