Skip to main content

12 posts tagged with "NodeJS"

View All Tags
· 5 min read

核心论点:pnpm link 验证的是本地源码,不是发布产物——两套验证面必须各走各的。

  1. link 视角:指向本地源仓库,src/ 里有什么就能解析什么。
  2. publish 视角:files 白名单外的目录全不进 tarball。
  3. CI 视角:装的是 npm 上的发布包,看不到未列进 files 的源码。
  4. 缺失验证pnpm pack 解包 grep,文件齐全才算发布面 OK。
  5. 踩坑信号:link 全绿、CI 找不到 module,99% 是 files 漏了。
· 5 min read

Node-keytar 是 Node.js 上最成熟的 OS 钥匙串绑定库 —— 但它 已经 archived

  1. 本质:原生模块,分别封装 macOS Keychain、Windows Credential Vault、Linux libsecret
  2. 核心 APIsetPassword / getPassword / deletePassword / findCredentials 四件套
  3. 适用场景:本地 CLI / 桌面工具保存用户 Token,不适合服务端容器
  4. 现状:仓库 2022-12 已 archived,最后版本 7.9.0 停更 4 年
  5. 替代方案:Electron 用 safeStorage,纯 Node 用 @napi-rs/keyring
  6. 跨平台:macOS / Win 零配置;Linux 需 libsecret-1-dev + Keyring 服务在跑
· 14 min read

Monorepo 不需要从 pnpm / Turborepo 开始——npm 7+ 自带的 workspaces 字段就能跑,是真正零成本的入门。

  1. 是什么:多项目放一个仓库,不强制任何工具
  2. 第 1 档:npm workspaces(npm 7+ 内置),根 package.json 加字段
  3. 第 2 档:yarn workspaces(早期方案,yarn 1 时代)
  4. 第 3 档:pnpm workspace(当前事实标准,磁盘节省 50%+)
  5. 第 4 档:Turborepo / Nx,只有跨包 build 依赖才需要
  6. 口诀:包数 <5 npm workspaces,<10 pnpm,10+ 才上 Turborepo
· 4 min read

Code Inspector 是一款 IDE 自动跳转插件,让你在浏览器中点击元素就能直接跳转到对应的源码位置。核心原理分为 3 步:

  1. 编译期插桩:打包时用 AST 解析,给每个 DOM 元素注入源码位置属性

  2. 运行时监听:浏览器端监听快捷键+点击,从 DOM 取出埋点信息

  3. 本地服务调度:向本地服务发送请求,调用 IDE 命令打开文件并定位

纯编译层实现,零业务代码侵入,兼容 Vue/React/原生,适配主流编辑器。
· 5 min read

npm/yarn 与 pnpm 依赖解析的 核心区别

  1. npm/yarn 采用 hoisting 提升机制,纵容幽灵依赖,是设计缺陷
  2. pnpm 基于虚拟存储 + 符号链接,严格禁止传递依赖直接访问,确保依赖树 100% 正确一致
  3. 典型问题:npm 下"正常运行"的代码,pnpm 下会报 Webpack 解析错误

解决方案:直接 pnpm add 添加为显式依赖,一行命令解决。

本质是设计理念的选择:pnpm 把正确性放在第一位,而不是开发便利性。

额外优势:磁盘节省 50%+,安装速度快 2-3 倍,全局硬链接共享同版本包。