Node
依赖管理和使用经验
Node 的版本选择
- LTS 版本(长期支持版本):稳定版本,通常用于生产环境。
- Node.js 20.17.0 (Iron)
- Node.js 22.9.0 (Jod)
- Current 版本(当前版本):最新的主要版本,加入最新特性和改进,通常用于开发和测试。
- Node.js 23.1.0(2024-10-31)
安装配置
直接下载安装
macOS:
从 Node.js 官网 下载 macOS 安装包(
.pkg
文件)使用 Homebrew 安装
shbrew install node
什么是 Homebrew?如何安装?
跳转到 Homebrew
Windows:
从 Node.js 官网 下载 Windows 安装包(
.msi
文件)如果已安装 Windows 10 或更新版本,可以使用 winget:
shwinget install --id=OpenJS.Nodejs
使用包管理器安装(推荐)
- 包版本管理工具的主要好处在于帮助开发者更方便地管理多个版本的 Node.js 和 npm。
- nvm 最受欢迎的 Node.js 版本管理工具,适用于 macOS 和 Linux。
- nvm-windows
nvm
的 Windows 版本,专为 Windows 开发者设计。 - fnm 也是 macOS 的优秀选择,具备轻量和高效的特点,适合那些不想耗费系统资源的开发者。
pnpm
安装
使用 npm 安装 pnpm:
shnpm install -g pnpm
使用 Homebrew 安装 pnpm:
shbrew install pnpm
工作空间
pnpm-workspace.yaml
定义了工作空间的根目录,并能够使您从工作空间中包含 /
排除目录。默认情况下,包含所有子目录。
yaml
packages:
- packages/*
- docs
- packages/playground/**
实用命令
- 删除所有
node_modules
文件夹
sh
find . -name 'node_modules' -type d -prune -execdir rm -rf '{}' +
- 递归删除
packages
和internal
目录下的dist
文件夹,同时忽略node_modules
目录
sh
find packages internal -path '*/node_modules/*' -prune -o -name 'dist' -type d -exec rm -rf {} + || true
postinstall
钩子在安装依赖后执行,可以用来执行一些构建操作,比如构建、设置环境或修复依赖关系。
json
{
"scripts": {
"postinstall": "pnpm build",
"build": "pnpm clean && pnpm -r -F='./packages/**' -F='./internal/**' run build",
"clean": "find packages internal -path '*/node_modules/*' -prune -o -name 'dist' -type d -exec rm -rf {} + || true"
}
}
📝 笔记
参数传递
- 当你使用
npm run
命令时,如果你想要传递参数给你的脚本,你需要在参数前加上--
, 例如:
sh
npm run gen:cc -- --path ol-cesium-map --name demo
这样,--path ol-cesium-map --name demo
就会被传递给你的脚本,而不是 npm run
命令。
- 使用
mri
来解析这些参数:
ts
const argv = process.argv.slice(2)
const mriData = mri<MriData>(argv)
// mriData : { _: [], path: 'ol-cesium-map', name: 'demo' }
增加 node 内存限制
通过 --max_old_space_size
选项,你可以指定更大的内存使用限制,构建大项目时能有效避免内存不足导致的 JavaScript heap out of memory
错误
sh
export NODE_OPTIONS=--max_old_space_size=10240
或者在 package.json
中的 scripts
中指定:
json
{
"scripts": {
"build": "NODE_OPTIONS=--max_old_space_size=10240 react-scripts build"
}
}