- Published on
前端的一些事
- Authors

- Name
- alan
yarn 和 npm 有什么区别
| 特性 | npm | Yarn |
|---|---|---|
| 开发者 | Node.js 官方(内置) | Facebook(现 Meta)主导,社区维护 |
| 默认随 Node 安装? | ✅ 是 | ❌ 否(需额外安装) |
| 锁定文件 | package-lock.json | yarn.lock |
“锁定文件”(Lock File)是包管理工具(如 npm 和 Yarn)用来精确记录项目中所有依赖及其子依赖的版本号、下载地址、校验和等信息的文件。它的核心作用是:确保每次安装依赖时,得到完全一致的依赖树,无论在谁的电脑上、何时安装。
| 包管理器 | 锁定文件名 | 是否应提交到 Git |
|---|---|---|
| npm | package-lock.json | ✅ 必须提交 |
| Yarn | yarn.lock | ✅ 必须提交 |
package.json文件作用
| 功能 | 说明 |
|---|---|
| ✅ 项目标识 | 名称、版本、作者、许可证等 |
| ✅ 依赖管理 | 声明项目需要哪些第三方包(如 React、Lodash) |
| ✅ 脚本自动化 | 定义常用命令(如 dev、build、test) |
| ✅ 模块入口 | 指定代码入口文件(main、module、exports) |
| ✅ 环境约束 | 要求最低 Node.js 版本、包管理器等 |
| ✅ 发布配置 | 控制如何将包发布到 npm/Yarn 仓库 |
- 可以在这个文件强制指定,使用哪一个包管理器。
"packageManager": "yarn@3.6.1"
dependenciesvsdevDependencies
dependencies:项目运行时必须的包(如 React、Express)。 → 部署到服务器时会安装。devDependencies:仅开发时需要的工具(如 Webpack、TypeScript、Prettier)。 → 生产环境不会安装,节省空间。
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 用于代码格式化。