网站搜索

单体仓库、TypeScript、传递依赖和包管理器(pnpm)

所以我刚刚使用 rush(pnpm)自助搭建了一个 monorepo。

我有一个名为 web-commons 的库,它有依赖项 fastify 等。

我有一个名为my-app的后台应用程序。

我想在 my-app 中使用某些 fastify 类型和模块,但我无法导入它。

如何让 web-commons 的依赖被转递地包含在 my-app 的依赖中?

我知道这里问题的一部分是 pnpm 使用符号链接,而我喜欢它,这样更有意义。

但是我不想在我在单仓库中的每个后端应用程序中声明相同的依赖,而且还会有更多……所以……有办法吗?

阅读更多 →

用 TypeScript 编写的 pnpm 私有工作区包:暴露 src 还是 dist?

我有一个主要使用 TypeScript 代码的 monorepo,使用 pnpm 管理,并且我们有很多工作区内的包依赖(例如用于库包)。这些包是这个工作区私有的,从不单独发布。我们通常这样定义包:

{ "name": "my-library", "license": "UNLICENSED", "private": true, "main": "dist/index.js", "types": "dist/index.d.ts", "files": ["dist"] }

这个问题在于当你更改库中的某些内容时。有点烦人的是,IDE在库重建之前不会看到这些更改。因此,我正在考虑是否我们应该让包直接公开 TypeScript 源代码:

{ "na

阅读更多 →

docker - 使用 pnpm 工作区对 TypeScript MERN 单体仓库进行 Docker 化

我有一个项目,具有以下文件夹结构,它是一个 TypeScript monorepo,包含两个应用程序(client 和 api)以及一个共享库(shared),前端和后端都依赖于这个共享库。我想将这个项目容器化。

my-monorepo/ |-- api/ | |-- src/ | |-- package.json | |-- tsconfig.json | | |-- client/ | |-- src/ | |-- package.json | |-- tsconfig.json | | |-- shared/ | |-- src/ | |-- package.json | |-- tsconfig.json | |-- package.json |-- pnpm-lock.yaml |-- pnpm-workspace.yaml |-- tsconfig.base.json

我尝试在所有工作区放置 Dockerfile 并使用 docker-compose 构建所有容器

阅读更多 →

material ui - 使用 pnpm 时为什么 TypeScript 会报错?

我正在尝试从 yarn 迁移到 pnpm,但遇到了一些问题,我不确定该如何处理。我还没有尝试调整提升(hoisting)相关的设置(如果可能的话,我更愿意不调整),但我正在努力理解为什么这会给我带来问题。

我有一个小型实用函数,在使用 yarn 时运行良好:

import { makeStyles } from '@material-ui/core'; export const useAlertConfigurationNameStyles = makeStyles((theme) => ({ name: { fon

阅读更多 →

typescript - 使用 pnpm install 时如何触发包自动构建?

我们的项目使用 pnpm + workspace + TypeScript,遵循 monorepo 标准。克隆仓库后,我们运行 pnpm install 来安装依赖并相互链接本地包。但每个包中的代码仍然以源代码模式保存在 .ts 文件中。如何在第一次使用 pnpm install 时触发每个包自动运行 pnpm run build,以便在包内生成 dist 文件夹。

答案#1

在每个 package.json 中添加 prepare 脚本,例如 prepare: pnpm run build。它将在本地执行 pnpm install 时触发,而无需任何参数。

阅读更多 →

node.js - 在 PNPM 单仓库中使用 Prisma Schema 与 NestJS 导致 ESM 问题

我创建了一个 PNPM 单体仓库,其中包含两个 NestJS 应用(apps/api 和 apps/backend;两者完全相同)以及一个 Prisma 数据库包(packages/database)。当我使用 start:dev 运行 api 时,我收到以下错误:

(node:69498) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.

阅读更多 →

使用 SSR + pnpm + preserveSymlinks 构建 Angular 时的 Typescript 编译错误

我有一个 Angular 应用程序,它构建得很好。这个应用程序唯一的特殊之处是它在 angular.json 中设置了 preserveSymlinks: true,并且一个本地库通过 package.json 依赖项中的 link: 协议安装用于开发。

一切都正常工作,直到我按照文档中的指南添加 SSR 并执行

ng add @angular/ssr

阅读更多 →

适用于 pnpm 单仓库的可行设置,包含 TypeScript、Vite 和 Rollup

我使用 pnpm workspaces 构建了一个单仓库,但在让它运行时遇到了麻烦。它在前端使用 TypeScript 和 Vite,在后端微服务使用 Rollup。

这是设置:

package.json <== all dependencies reside here tsconfig.json pnpm-workspaces.yaml - commonlib/ package.json, tsconfig.json, rollup.config.js src/ ...interfaces, types etc--- - serverlib/ package.json, tsconfig.json, rollup.config.js src/ ...modules for common server/microservice funtionality--- - weblib/ package.json, tsc

阅读更多 →

reactjs - 使用 PNPM 的 Vite 因对 `node_modules/.pnpm` 包的导入分析而失败

在一个 monorepo 中使用 PNPM 和 Vite 会导致以下问题,我完全不知道这种 [email protected]_@[email protected] 是什么怪东西,可能是 PNPM 的某种奇怪行为。有没有办法禁用对这些库的检查?

9:02:46 PM [vite] Internal server error: Failed to parse source for import analysis because the content conta

阅读更多 →

node.js - 为什么在执行 “pnpm install ...” 命令后,PNPM 会将我的包标记为“version: link:”?

我有一个包,它已经在 NPM 上发布。在这个包中,我将同一个包用作它的一个依赖项,https://github.com/tal-rofe/cz-vinyl

所以正如你所看到的,包名是 cz-vinyl,最新版本是 2.5.0。最重要的,我的 package.json 文件包含:"cz-vinyl": "2.5.0",所以我将该包作为依赖使用。

在这个包中,我在它的 package.json 文件中导出了一些 TypeScript 类型:

"exports": { ".": { "types": "./dist/config.d.ts", "require":

阅读更多 →