Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

如何从 yarn / npm 迁移到 pnpm

Posted on 2022-05-30

8kdj16xqf1lotj0s9snz.png

动机

pnpm在获取、解析和存储依赖项方面表现更好。我的个人经验表明,在某些项目中pnpm可能约为。解决依赖关系的速度提高了 10 倍,磁盘使用效率提高了 3 倍。
从npm或yarn迁移也很容易。 CLI 也与npm和yarn非常相似
https://pnpm.io/motivation

迁移指南

第 1 步:安装pnpm安装
第 2 步:删除node_modules

 npx npkill

第 3 步:添加到package.json

 "scripts" : {   
  "preinstall" : "npx only-allow pnpm" ,    
  ...   
} ,   
"packageManager" : "pnpm@<whatever pnpm version you're going to use>"   

第 4 步:创建pnpm-workspace.yaml

 packages : # include packages in subdirs (eg apps/ and components/) - " apps/**" - ' packages/**' # if required, exclude some directories - ' !**/test/**'

第 5 步:运行

pnpm import

此命令将基于yarn.lock (或packages-lock.json )创建一个pnpm-lock.yaml文件
第 6 步:删除yarn.lock (或packages-lock.json )
第 7 步:安装依赖项

pnpm i

第 8 步:将所有package.json和其他文件中的npm run (或yarn )替换为pnpm (例如pnpm test代替npm run test )

要在 monorepo 中的所有工作区运行所有命令,请使用 pnpm pnpm run | pnpm (例如pnpm -r test )

重要的!您需要记住pnpm不使用依赖提升:

使用 npm 或 Yarn Classic 安装依赖项时,所有包都被提升到模块目录的根目录。因此,源代码可以访问未作为依赖项添加到项目的依赖项。
默认情况下,pnpm 使用符号链接仅将项目的直接依赖项添加到模块目录的根目录中。
即插即用

实际上,这意味着如果您有一个包A导入了包B ( import something from 'B'内容)但没有在dependencies项或devDependencies中明确指定B ,那么执行将失败。

备忘单

表 命令 凉爽的
安装依赖项 pnpm i https://pnpm.io/cli/install
添加依赖项 pnpm add <package> https://pnpm.io/cli/add
显示依赖于指定包的所有包 pnpm why <package> https://pnpm.io/cli/为什么
运行命令,就好像它是从项目的根目录而不是工作区包执行的一样 pnpm -w <command> https://pnpm.io/pnpm-cli#-w—workspace-root
将命令限制为特定的包子集 pnpm --filter <package_selector> <command> https://pnpm.io/filtering
这会从每个包的“脚本”对象运行任意命令 pnpm -r <command> https://pnpm.io/cli/run#–recursive–r

原文: https://dev.to/andreychernykh/yarn-npm-to-pnpm-migration-guide-2n04

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Lou Plummer
  • Luke Wroblewski
  • Matt Stoller
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme