pnpm的monorepo问题,
packages:
common的package.json
{ "name": "common", "version": "1.0.1", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC"}
在main文件里面pnpm -F main add common
但是添加的包,不是本地的,这个是什么问题
改动common的version版本号,子项目不能以0开头的版本号,
pnpm -F main add @project/common 也是不行, 是404,走npmjs库了
// ===========================================
windows:
node -v: v16.20.0
pnpm -v: 8.6.7
pnpm -F main common 完全ok
ubuntu:
node -v: v20.12.2
pnpm -v: 9.0.6
ubuntu 始终走的npm库 不知道为啥,修改过common的name, pnpm -F main add @project/common 不行。
ubuntu暂时没有很好的解决办法。
pnpm-workspaces.yaml
文件,其中包含了当前workspace下的项目结构。其次, pnpm安装依赖时,如果没有特殊指定,它更倾向于使用远程的。确保你的根目录下有个 .npmrc
配置文件,其内容是优先使用Workspace中的package
link-workspace-packages = trueprefer-workspace-packages = truerecursive-install = true
然后,在根目录下执行你之前的安装命令就可以嘞。
pnpm
是一个高效的 JavaScript 包管理工具,特别适用于管理大型的 monorepo 项目。在 monorepo 中,通常会有多个包(package)共享同一个根目录,并且这些包之间可能会有相互依赖的关系。
首先,关于在 main
文件中使用 pnpm -F main add common
命令添加 common
包时,不是添加的本地包的问题:
当你运行 pnpm -F main add common
时,pnpm
会尝试从配置的源(例如 npm、Yarn 或其他自定义源)中查找名为 common
的包。由于你的项目中存在一个名为 common
的包,pnpm
可能会误将其视为一个 npm 包而不是本地的工作区包。
要解决这个问题,你需要确保 pnpm
能够正确地识别并链接到本地的工作区包。你可以尝试使用 @project/common
作为包的标识符,其中 @project
是你的工作区根目录的名称(通常是 package.json
文件所在的目录名称)。
因此,你应该在 main
项目的 package.json
文件中添加 @project/common
作为依赖项,而不是 common
。你可以使用以下命令来添加依赖项:
pnpm -F main add @project/common
这样,pnpm
将正确地识别并链接到本地工作区中的 common
包。
接下来,关于版本号不能以 0
开头的问题:
版本号不能以 0
开头是一个常见的约定,因为某些包管理工具(如 npm)在处理以 0
开头的版本号时可能会遇到兼容性问题。然而,pnpm
本身并不限制版本号的格式。
如果你遇到 pnpm -F main add @project/common
命令返回 404 错误,并且尝试从 npm 仓库中查找包,那么问题可能在于你的 pnpm
配置或项目结构。
确保你的 pnpm
配置正确,特别是与 monorepo 相关的配置。你可以检查项目的根目录下的 pnpmfile.js
(如果存在)以及 package.json
文件中的相关配置。
此外,确保你的项目结构符合 pnpm
的要求。通常,monorepo 的根目录应该包含一个 package.json
文件,其中列出了所有工作区包的信息。每个工作区包也应该有自己的 package.json
文件。
如果问题仍然存在,你可以尝试清理 pnpm
的缓存并重新安装依赖项。可以使用以下命令来清理缓存:
pnpm cache clean
然后,你可以尝试重新安装依赖项:
pnpm -F recursive install
这将递归地安装所有工作区包的依赖项,并确保它们正确链接。
希望这些解答能够帮助你解决问题!如果还有其他疑问或需要进一步的帮助,请随时提问。
创建项目 点击选择【在线AssetBundle检测】产品,您将进入到该产品的项目管理界面,如下图所示。 点击“+”号,即会出现如下项目创建界面。 填写项目信息,包括 项目名称、项目引擎、具体版本号 和 资源类型 后,点击 “下一步” 后完成项目创建,项目界面中将根据项目信息生成一个新的项目。 注意:在当前的UWA资源检测版本中,我们仅对Unity引擎的AssetBundle文件进行检测和分析。 上
创建项目 点击选择【游戏/VR应用性能诊断与优化】产品,您将进入到该产品的项目管理界面,如下图所示。 通过简单三个步骤,即可创建评测项目。 点击 “+” 号,打开创建项目界面。 在界面中填写详细的项目信息,包括项目名称、发布平台、项目引擎和项目类型后,点击 “下载SDK” ,系统将根据您所选择的项目平台来下载对应的 UWA SDK,将在后续的SDK集成时使用。 点击 “下一步” 完成项目创建,项目
进入San CLI UI的主页即为项目管理界面,可对显示的本地列表项目进行搜索、收藏、在编辑器打开、重命名、从San CLI UI删除(不会删除本地文件),删除后可通过导入项目重新显示在项目列表中,
为了养成良好的习惯,我们把 ConTeXt 文档拆分到几个单独的.tex 文件中,这样维护起来比较方便。 首先是主文档 product.tex[73],生成 PDF 只要编译此文件即可 %%%%%此文件使用 product 环境,起始声明 \startproduct{} %%%导言区使用 \environment 载入文件 %载入样式文件 style.tex \environment style
场景如下:有三个项目A,B,C,这三个项目的关系如下图 A是一个核心项目,其最终会使用Electron打成一个独立的项目A.EXE B项目是A项目的超集,在A的基础上会增加一部分功能,最终是一个B.WEB项目 C项目是B项目的超级,在B的基础上也会增加一部分功能,最终也会使用Electron打成一个独立的项目C.EXE 经过一番调研,前端打算使用pnpm构建Monorepo架构,初步设想如下: c
项目管理 & 代码托管 Github [free to $] Codebase [$] Bitbucket [free to $] Unfuddle [$] Assembla [free to $]