仅包含 npm 发布的跟踪文件

问题描述 投票:0回答:3

默认情况下,所有文件都从包目录中发布

npm publish .

即使它们没有被 Git 跟踪。未跟踪的文件可以是 .gitignore 或 .npmignore 未覆盖的随机临时文件,并且可能包含敏感数据。

有没有办法避免未跟踪的文件被意外发布?

git npm
3个回答
1
投票

我认为你需要尝试 publish-please 作为替代:

正如它声称的那样,在发布到注册表之前它将进行大量验证。

检查工作树中是否没有未跟踪的文件。


1
投票

不要从您的工作存储库发布。克隆一个干净的存储库并从中发布。当您有新的开发时,只需使用

git pull
更新干净的存储库并再次发布。干净的存储库可以是持续集成服务器上的存储库,因此如果所有测试都通过了 CI 服务器会自动发布。


0
投票

我做了类似于@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

查看完整的脚本
© www.soinside.com 2019 - 2024. All rights reserved.