Skip to main content

11 posts tagged with "NodeJS"

View All Tags

Node-keytar:把密码交还给操作系统钥匙串

· 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 服务在跑

JS 项目 Monorepo 怎么起步?从 npm workspaces 开始的最简路径

· 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

Code inspector 代码定位的插件原理是什么?

· 4 min read

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

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

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

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

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

pnpm 依赖解析机制和 npm/yarn 的区别?

· 5 min read

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

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

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

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

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

Node.js 包版本约束与依赖类型

· 4 min read

package.json 里的版本号不是装饰——它决定下游装你的包时会拿到什么。

  1. SemVer 三段式:major.minor.patch,递增规则:破坏性变更 / 新功能 / bugfix
  2. 范围符号核心4 个最常用 —— ^ ~ * >=
  3. 0.x.x 陷阱^0.6.6 实际只升 patch,不升 minor
  4. 5 种依赖类型:dependencies / devDeps / peerDeps / optionalDeps / bundledDeps
  5. peerDeps 行为变化:npm 7+ 默认自动安装(npm 3-6 还会警告)
  6. 现代替代overrides(npm)/ resolutions(Yarn)取代 bundledDeps