npm脚本跨平台兼容的核心是避免系统原生命令,改用node.js实现的cli工具:shx替代shell命令,rimraf/cpr/make-dir-cli处理文件操作,cross-env统一设置环境变量,并推荐git bash或wsl2执行环境。

npm 脚本本身不直接解决跨平台兼容问题,真正起作用的是你选用的命令工具和执行环境。核心思路是:**避免直接调用系统原生命令(如 rm -rf、cp -r、mkdir -p),改用 Node.js 实现的跨平台 CLI 工具**。
用 shx 替代 Unix shell 命令
shx 是最轻量、最常用的方案,它把常见 shell 命令封装成 Node.js 脚本,天然支持 Windows、macOS、Linux。
- 安装:
npm install --save-dev shx - 写法示例:
"clean": "shx rm -rf dist""copy": "shx cp -r src/assets dist/assets" - 优势:语法几乎完全兼容 bash,学习成本低;不依赖 Git Bash 或 WSL;PowerShell 和 cmd 下均可运行
用专用工具处理文件系统操作
对更复杂或高频操作,可选用功能更专注的包,语义清晰、容错更强:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
删除:用
rimraf(比shx rm -rf更稳定,尤其处理长路径或权限问题)"clean": "rimraf dist coverage" -
复制:用
cpr(支持 glob、保留时间戳等)"copy:public": "cpr public/**/* dist/ --no-clobber" -
创建目录:用
make-dir-cli(自动递归建目录,无需-p)"prepare": "make-dir-cli dist/src dist/lib"
统一执行环境,避开 cmd/PowerShell 限制
Windows 自带终端对 shebang、变量语法、管道符等支持差,建议从源头规避:
- 开发时优先使用 Git Bash 或 WSL2 运行 npm script,而非 cmd/PowerShell
- 避免在脚本中直接写
%VARIABLE%或$VARIABLE—— 改用 cross-env 设置环境变量"build:prod": "cross-env NODE_ENV=production webpack" - 路径拼接不用字符串拼接(如
./srcindex.js),全部用正斜杠./src/index.js,Node.js 原生兼容
类型与构建链路中的隐式兼容要点
跨平台不只是脚本命令,还涉及构建产物和类型解析:
- TypeScript 编译输出路径(
outDir)建议设为 Unix 风格(如dist),不要用dist\;tsc 会自动适配系统分隔符 - 若项目含二进制依赖(如
esbuild、sharp),确保engines.node版本一致,并在 CI 中启用--ignore-scripts=false触发平台专属构建 - 检查
package.json的bin字段是否含 shebang(#!/usr/bin/env node)—— 它在 Windows 下会被忽略,但 Node.js 仍能执行,无需修改
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










