如何在不实际发布到NPM的情况下测试npm publish结果?
当然有办法!我之前也踩过.npmignore规则太严把必要文件误排除的坑,这几个实用方法完全不用真的发布到npm就能验证打包结果:
用
npm pack生成本地tarball包
这是官方最推荐的方法,npm pack会直接生成一个和你发布到npm时完全一致的tarball压缩包。执行命令:npm pack执行后,当前目录会生成类似
your-project-name-1.0.0.tgz的文件。你可以用解压命令查看里面的内容:tar -xzf your-project-name-1.0.0.tgz解压后会得到一个
package文件夹,里面的内容就是最终会被发布到npm的所有文件,直接检查就能确认有没有漏掉必要文件,或者有没有包含多余的内容。用
npm publish --dry-run模拟发布流程
如果你想更全面地检查发布的前置条件(比如package.json配置合法性、npm账号权限等),同时查看打包文件列表,可以用这个命令:npm publish --dry-run它会完整模拟发布的所有步骤,但不会真的把包上传到npm。命令输出里会有一段
npm notice === Tarball Contents ===,下面会列出所有即将被打包的文件,一目了然。自定义目录保存测试包
如果你想把生成的tarball放到指定的本地目录(比如你示例里的$HOME/.local.npm),可以结合npm pack和移动命令实现:set -e local proj="bar" local path_to_foo="." mkdir -p "$HOME/.local.npm" npm pack mv "${proj}-"*.tgz "$HOME/.local.npm/"这样就把生成的测试包移到了你指定的目录里,方便后续随时查看或测试安装。
另外提醒一下:.npmignore的规则会被package.json里的files字段覆盖。如果有必须要包含的文件,直接在files数组里明确列出来,能有效避免被.npmignore误排除。
内容的提问来源于stack exchange,提问作者user7898461

