node.js版本管理必须用nvm(macos/linux)或fnm(windows/跨平台),禁用系统预装版本;vscode需配置.vscode/settings.json启用eslint/prettier、typescript自动导入及调试路径;初始化应通过package.json scripts + preinstall钩子校验环境。

Node.js版本管理必须用nvm或fnm,别碰系统自带npm
macOS和Windows自带的Node.js经常卡在旧版本,npm install -g装全局工具会权限报错或路径混乱。直接删掉系统预装Node,改用nvm(macOS/Linux)或fnm(跨平台、更快)——它们能隔离不同项目的Node版本,且脚本里可直接调用nvm install 20.11.1这类命令。
常见错误:用brew install node后发现node -v和nvm current不一致;或者脚本里写sudo npm install -g typescript,结果VSCode终端里tsc仍找不到——这是因为sudo把二进制装到了root路径,普通用户PATH里没包含它。
- macOS/Linux优先跑:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash - Windows用
fnm更稳:winget install Schniz.fnm,然后fnm use 20.11.1 - 所有脚本开头加
export NVM_DIR="$HOME/.nvm"并source对应shell配置,否则VSCode集成终端无法识别nvm
VSCode工作区配置要靠.devcontainer.json或.settings.json,别只靠插件
光装“ESLint”“Prettier”插件没用,VSCode不会自动启用它们。关键得在项目根目录放.vscode/settings.json,声明哪些规则生效、是否保存时格式化、TS编译选项是否透出到编辑器。
典型问题:改了tsconfig.json里的"strict": true,但VSCode里没报错;或者保存文件后没触发Prettier,因为"editor.formatOnSave"没设为true,或"editor.defaultFormatter"没指定"esbenp.prettier-vscode"。
- 必须包含:
"typescript.preferences.includePackageJsonAutoImports": "auto",否则import提示慢半拍 - 禁用冲突项:
"javascript.suggestionActions.enabled": false,避免和ESLint自动修复打架 - 调试配置写进
.vscode/launch.json,用runtimeExecutable指向nvm exec 20.11.1 node,确保调试时用对Node版本
初始化脚本要用package.json scripts + preinstall钩子,不是全靠shell命令
自动化脚本如果全是mkdir src && npm init -y && npm install express --save这种链式命令,一出错就中断,也没法重试。正确做法是把环境准备逻辑拆进package.json的scripts字段,再用preinstall触发校验。
基于三引擎设计,从微信文章、新闻和博客网页提取干净内容,支持标题作者日期元数据,多格式和批量处理。
比如执行npm install前,preinstall脚本能检查node -v是否≥20,code --version是否存在,缺失就退出并打印明确提示,而不是让后续npm ci失败后报一堆无关错误。
"preinstall": "node -e \"if (parseInt(process.version.slice(1).split('.')[0])-
"setup": "npm install && npm run build && code ."—— 这样npm run setup就能一键开箱即用 - 避免在脚本里写
cp ./template/.vscode ./,改用npm pkg set scripts.setup=\"...\"动态写入,方便CI复用
调试断点失效?检查node --inspect和--enable-source-maps是否同时开启
VSCode调试Node.js时断点灰色、不命中,90%是因为启动命令没带源码映射参数。用nodemon或ts-node时尤其容易漏掉--enable-source-maps,而VSCode的launch.json里runtimeArgs又没补全。
错误示范:"runtimeArgs": ["--inspect-brk"] —— 缺少源码映射,断点打在dist/index.js上,但你在src/index.ts里点的。
- TypeScript项目必加:
"runtimeArgs": ["--inspect-brk", "--enable-source-maps"] - 若用
ts-node,命令行要写ts-node --inspect-brk --enable-source-maps src/index.ts,不能只写ts-node src/index.ts - 检查
tsconfig.json中"sourceMap": true和"outDir"是否匹配launch.json里的"outFiles"路径
最常被忽略的是package.json里type: "module"和launch.json中runtimeExecutable的兼容性——ESM项目必须用node --inspect-brk --enable-source-maps --loader ts-node/esm,否则断点直接失效。










