Published on

前端的一些事

Authors
  • avatar
    Name
    alan
    Twitter

yarn 和 npm 有什么区别

特性npmYarn
开发者Node.js 官方(内置)Facebook(现 Meta)主导,社区维护
默认随 Node 安装?✅ 是❌ 否(需额外安装)
锁定文件package-lock.jsonyarn.lock

“锁定文件”(Lock File)是包管理工具(如 npmYarn)用来精确记录项目中所有依赖及其子依赖的版本号、下载地址、校验和等信息的文件。它的核心作用是:确保每次安装依赖时,得到完全一致的依赖树,无论在谁的电脑上、何时安装。

包管理器锁定文件名是否应提交到 Git
npmpackage-lock.json必须提交
Yarnyarn.lock必须提交

package.json文件作用

功能说明
项目标识名称、版本、作者、许可证等
依赖管理声明项目需要哪些第三方包(如 React、Lodash)
脚本自动化定义常用命令(如 devbuildtest
模块入口指定代码入口文件(mainmoduleexports
环境约束要求最低 Node.js 版本、包管理器等
发布配置控制如何将包发布到 npm/Yarn 仓库
  • 可以在这个文件强制指定,使用哪一个包管理器。
"packageManager": "yarn@3.6.1"
  1. dependencies vs devDependencies
  • dependencies:项目运行时必须的包(如 React、Express)。 → 部署到服务器时会安装。
  • devDependencies:仅开发时需要的工具(如 Webpack、TypeScript、Prettier)。 → 生产环境不会安装,节省空间。
  1. scripts:你的命令中心

你不用记住复杂命令,只需运行:

yarn dev      # 等价于 next dev
yarn build    # 等价于 next build
  • 比如说我的文件有如下脚本
  "scripts": {
    "start": "next dev",
    "dev": "cross-env INIT_CWD=$PWD next dev",
    "build": "cross-env INIT_CWD=$PWD next build && cross-env NODE_OPTIONS='--experimental-json-modules' node ./scripts/postbuild.mjs",
    "serve": "next start",
    "analyze": "cross-env ANALYZE=true next build",
    "lint": "next lint --fix --dir pages --dir app --dir components --dir lib --dir layouts --dir scripts",
    "deploy": "next build && touch out/.nojekyll",
    "prepare": "husky"
  },

就可以执行 yarn dev 开启开发者模式, yarn build 用于构建, yarn lint 用于代码格式化。