问题标签 [pnpm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
281 浏览

runtime-error - 错误不干净的工作树。首先提交或存储更改

我收到了 npm 超时错误,所以我遵循了这个答案。当我运行时pnpm publish --otp=111111,我得到了这个错误:

 错误不干净的工作树。首先提交或存储更改。

这个错误是什么意思?我怎样才能解决这个问题 ?

0 投票
0 回答
402 浏览

node.js - 在不同操作系统上从外部驱动器运行 nodeJS 应用程序

我需要在运行 macOS 的主开发机器上运行多个 nodeJS 应用程序,第二个是没有互联网连接的 Windows 系统。由于缺少互联网连接,我无法运行npm install.

我想在 windows 系统上做一些工作,把项目带回家,也对这些项目做一些工作,然后把所有东西都推送到存储库。

因此,我决定将所有项目放在外部 SSD 驱动器上,并选择pnpm ( https://pnpm.js.org/en/ ) 来节省磁盘空间,因为大多数项目都使用几乎相同的依赖项。对我来说,安装相同的依赖项 30 次是没有意义的,这会炸毁我的 250GB 驱动器。

pnpm将所有需要的依赖项保存在存储中。该目录应保存在 SSD 驱动器上。但这就是问题所在。

在我的 Mac 上,路径是/Volumes/SsdName/.pnpm-store并且运行pnpm install会将所有依赖项保存在我的 SSD 驱动器上的商店中。但在 windows 机器上,路径是E:\. 这就是为什么我无法从 Windows 机器上的外部驱动器启动项目的原因。

0 投票
1 回答
163 浏览

node.js - 如何使用 PNPM 在两个节点项目之间共享 node_modules?

我有一个项目,里面有两个nodeJS项目,一个后端项目,里面有一个文件夹“客户端”用于前端。现在我想创建一个共同的 node_moduels 文件夹。

我发现 PNPM 可以做到这一点,但对我来说,文档不是很清楚。它是如何工作的?如何在我的根文件夹上运行 pnpm i,然后让我的 node_modules 可用于我的“客户端”文件夹?

谢谢!

0 投票
1 回答
276 浏览

pnpm - pnpm list -g 显示一些包为“未保存”,这是什么意思?

❯ pnpm 列表 -g

图例:生产依赖,仅可选,仅开发

/home/mechell/.nvm/versions/node/v14.5.0/pnpm-global/4

依赖项:nodemon 2.0.4 pnpm 5.3.0

未保存(如果需要,应将这些依赖项添加到 package.json):

@types/color-name 链接:node_modules/.pnpm/@types/color-name@1.1.1/node_modules/@types/color-name%

那么这是什么意思?将 typescript 安装为 global 时有更多这些,我不确定它是否丢失它并且它会破坏某些东西......

0 投票
1 回答
52 浏览

typescript - 是否有一个 mono repo 库允许我们在不编译的情况下使用带有类型建议的 typescript 包?

假设我有一个这样的单声道回购:

这两个包都是用 TypeScript 编写的。我需要在package1里面使用package2。目前我正在使用 lerna(计划切换到 pnpm),如果我想package1在任何其他包中使用,我首先必须构建它并生成index.d.ts类型定义文件,以便在我使用它的任何地方获得类型完成。如果我可以在不编译的情况下做到这一点,那就太好了,这样在开发过程中,我可以轻松地继续工作,而无需package1每次更新时重新构建。目前,我为此设置了一个观察者,它从我的机器上占用了大量资源。

0 投票
1 回答
1461 浏览

npm - npm 预安装脚本的问题

我正在尝试从 npm 跳转到 pnpm。在按照此处所述进行更改后,我发现了一个有用的提示,可以避免运行“npm install”:https ://pnpm.js.org/en/only-allow-pnpm

不幸的是,我的预安装生命周期覆盖没有被执行。似乎很简单,但是当我运行“npm install @types/jest”之类的东西时,npm install 仍然有效

包.json:

npm 版本 6.14.2。

有任何想法吗?

0 投票
1 回答
259 浏览

google-cloud-platform - 如何在 Google Cloud Build 中使用 PNPM?

我想迁移到 PNPM,但是,我找不到在 Google Cloud 上使用其锁定文件的方法。我当前cloudbuild的配置如下:

Afaik 这些官方镜像只支持 Yarn 和 NPM。有没有简单的方法在这里用 PNPM 替换 Yarn?

我查看了Cloud Builders GitHub存储库,但那里也没有 PNPM。

0 投票
0 回答
201 浏览

docker - 有没有办法在 pnpm 中更改 /_tmp 的路径?

所以我使用带有翼手龙面板的docker,它似乎使文件系统位于/只读,但不在用户主目录中。我正在使用使用 pnpm + alpine 和 node 的自定义 docker 映像,它尝试将文件链接到 /_tmp 的临时文件夹和一堆随机数。我想知道是否有办法改变这条路径,因为我很确定由于翼手龙的限制,我不能让它成为非只读的。

这是我得到的错误:

这是 docker 镜像的链接:https ://github.com/creepinson/pnpm-docker

0 投票
0 回答
109 浏览

node.js - 如何防止我的图书馆的消费者安装我的 devDependencies?

我有一个图书馆,它有一个peerDependency. 为了能够在图书馆上工作,我还将它列为devDependency

我收到消费者的报告说,即使他们已经安装了foo@^3.0,我的包在拉foo@^4.0,所以现在他们的项目有 3 和 4 的混合。

我的假设是,由于foo在对等方上声明,它不会为消费者项目安装,但情况似乎并非如此。

我们已经考虑--prod在消费者项目上添加标志,但这意味着我们需要强制他们使用它:“为了使用我们的库,您需要安装 --prod 或冒着混合使用这两个包的风险”我'不确定这是最好的方法。

我错过了什么,有没有办法让我的库在消费者运行安装时不提取在 peerDependenceis 上声明的 devDependencies?

如果有帮助,我们将使用pnpm作为我们的包管理器

0 投票
1 回答
548 浏览

node.js - pnpm安装及查看结果(windows10)

我一步一步地写一切。我从头到尾阅读并应用了网站上的所有页面(从介绍到高级)。

出现也可能有用,我不是专业的软件开发人员。我正在努力成为一种爱好。

当我在做一个旧项目时,我想再次尝试“pnpm”,我曾尝试过但未能使用。

使用

  • 操作系统:Windows 10 x64
  • 编辑:网络风暴
  • 节点:14.15.0

项目:我正在进行的项目是“Ionic-Angular”项目。当我将它与“npm”一起使用时,项目的总大小为“699 MB”。问题:安装“pnpm”并制作设置文件后,我打开项目并等待它使用“pnpm install”命令安装包。在没有任何麻烦之前就结束了。但是,该项目的总大小已经上升到“1.11 GB”。

一步一步来,至于我做了什么。

  1. 安装nodejs LTS版14.15.0 win64
  2. 运行 PowerShell(以管理员身份)。
  • npm 配置编辑

  • 更改所有路径 -> 前缀、缓存、tmp、userconfig、globalignorefile、globalconfig。

    .npmrc 文件更改列表;

  1. 重启电脑
  2. 安装 pnpm PowerShell
  • (调用 WebRequest 'https://raw.githubusercontent.com/pnpm/self-installer/master/install.js')。内容 | 节点)
  • pnpm 创建 %AppData%Romaning%\npm 文件夹。并剪切文件夹粘贴新路径的所有文件。(pnpm, pnpm.cmd, pnpx, pnpx.cmd 移动到 npm-path [nodejs 安装文件夹])
  • 根据网站上的叙述,我在“.npmrc”文件中添加了以下路径。加载 .npmrc 文件(2 个相同的文件)并添加 [store-dir, global-dir, npm-path -> change for pnpm] 路径
  1. 打开 WebStorm ide 并转到 Settings->Language & Frameworks->node.js and NPM->Select Package Manager,手动将其更改为 -> npm-path(因为我将“pnpm,pnpm.cmd”文件移动到了这个位置.)
  2. 测试;
  • 运行 PowerShell 和命令: pnpm add @ionic/cli -E --global "@ionic/cli" 安装在指定位置,没有任何问题。
  1. 然后,我使用 PowerShell 使用命令“pnpm add -E --global”将所有包安装在“devDependencies”中。它配置了它们,它没有看到任何问题。返回 WebStorm ide 并关闭 PowerShell。
  2. 打开项目并在终端写入此命令“pnpm install”
  • pnpm 好的,没问题。一切看起来都很好。
  1. 当我再次查看“项目”文件夹的大小时,我发现它已经增长太多了。
  • 旧大小 699 MB 新大小 1.11 GB
  • 只有 node_module 文件夹 996 MB。
  1. 后“pnpm”项目文件夹的大小如下所示。
  • 项目文件夹 = 1.11 GB

  • node_module 文件夹 = 996 MB

  • node_module -> .pnpm(我猜是虚拟存储文件夹)437 MB

  • node_module -> 所有其他没有 .pnpm 文件夹的文件夹 642 MB

  • node_module -> .ignored + .ignored_ast_types-flow,.ignored_eslint-scope .ignored_mime-types .ignoder_multicast-dns-service-types -> 244 MB

  • 以及我之前提到的“pnpm-global”和“pnpm-store”文件夹(.npmrc 文件);

  • pnpm 全局 -> 269 MB

  • pnpm 商店 -> 540 MB

    项目总大小 + pnpm 全局和存储 = 2 GB(Windows 资源管理器显示文件夹大小 2 GB)我使用 PowerShell 并获取文件夹大小,列出所有文件夹传输到 excel 列和总文件夹大小 = 767 MB

  • 旧大小 = 699 MB 使用 npm

  • 新大小 = 767 MB 使用 pnpm

    我使用 PowerShell 命令

    $fso = new-object -com Scripting.FileSystemObject gci -目录| select @{l='Size'; e={$fso.GetFolder($_.FullName).Size}},FullName 排序大小-降序`| ft @{l='大小 [MB]'; e={'{0:N2}' -f ($_.Size / 1MB)}},全名 | 输出文件 out.txt

实际上,我认为应该是这样的。它将主包加载到一个文件夹中(例如: C:\pnpm-global ),并在其他项目中使用它们时从那里将它们添加为 symlink-junction。但是网站上有一条关于“virtual-store-dir”的说明。注意:虚拟商店不能在多个项目之间共享。每个项目都应该有自己的虚拟商店。

我安装了“pnpm”,因为我的目标是减少项目大小(连接符号链接等)。

当我想在互联网上了解有关“pnpm”的一些信息时,我也找不到任何资源。只有网站,资源非常有限。

我不认为有很多用处,但我不知道当有这么多项目用于 1 个项目时会是什么样子。