默认情况下,所有文件都从包目录中发布
npm publish .
即使它们没有被 Git 跟踪。未跟踪的文件可以是 .gitignore 或 .npmignore 未覆盖的随机临时文件,并且可能包含敏感数据。
有没有办法避免未跟踪的文件被意外发布?
不要从您的工作存储库发布。克隆一个干净的存储库并从中发布。当您有新的开发时,只需使用
git pull
更新干净的存储库并再次发布。干净的存储库可以是持续集成服务器上的存储库,因此如果所有测试都通过了 CI 服务器会自动发布。
我做了类似于@phd建议的事情,即进行干净的克隆。唯一的区别是我在本地计算机上执行此操作。
我就是这样做的:
set -euo pipefail
function publish() {
local path="$PWD";
local tmp;
tmp="$(mktemp -d)";
cd "$tmp";
git init;
git remote add origin "$path/.git";
git fetch origin;
git checkout "${1:-$BRANCH}"
cd "$tmp";
npm i;
npm audit;
npm t;
[[ -z "$(git status -s)" ]] || {
echo "aborting publish: contains uncommited files."
exit 1
};
npm publish
}
您可以在https://github.com/bas080/git-npm/blob/master/lib/git-npm
查看完整的脚本