-
Bartek Wrona authored
npm_publish.sh script should accept local mods (to include generated urls to documentation and version info)
Bartek Wrona authorednpm_publish.sh script should accept local mods (to include generated urls to documentation and version info)
npm_publish.sh 1.42 KiB
#!/usr/bin/env bash
set -e
SCRIPTPATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
PROJECT_DIR="${1:?Missing arg #1 specifying a project source directory}"
REGISTRY_URL="${2:?Missing arg #2 pointing an NPM registry URL}"
SCOPE="${3:?Missing arg #3 pointing a package scope}"
PUBLISH_TOKEN="${4:?Missing arg #4 pointing a deployment token}"
echo> "${PROJECT_DIR}/.npmrc"
if [ "$REGISTRY_URL" != "registry.npmjs.org/" ]; then
echo "${SCOPE}:registry=https://${REGISTRY_URL}" >> "${PROJECT_DIR}/.npmrc"
fi
echo "//${REGISTRY_URL}:_authToken=\"${PUBLISH_TOKEN}\"" >> "${PROJECT_DIR}/.npmrc"
pushd "${PROJECT_DIR}"
NAME=$(jq -r '.name' package.json)
VERSION=$(jq -r '.version' package.json)
PACKAGE_DIST_TAG=$(jq -r '.publishConfig.tag' package.json)
if [ "${VERSION}" = "" ]; then
echo "Could not find a valid version name for package"
exit 1
fi
set +e
echo "Attempting to verify presence of package: ${NAME}@${VERSION}, dist-tag: ${PACKAGE_DIST_TAG} in the registry: ${REGISTRY_URL}"
# Check if package with given version has been already published
npm view "${NAME}@${VERSION}" version 2>/dev/null
if [ $? -eq 0 ]; then
echo "Package already published"
else
set -e
echo "Publishing ${NAME}@${VERSION} to tag ${PACKAGE_DIST_TAG}"
# We are going to repack the tarball as there are registry-dependent data in each job for package.json
pnpm publish --no-git-checks --access=public --tag "${PACKAGE_DIST_TAG}"
fi
popd