diff --git a/.gitlab/ci/test.gitlab-ci.yml b/.gitlab/ci/test.gitlab-ci.yml
index 59f933b0347c2d4ee0863bffb6ad2a89287be68a..33dafc50099e691d327760598b2b56f75f4b900c 100644
--- a/.gitlab/ci/test.gitlab-ci.yml
+++ b/.gitlab/ci/test.gitlab-ci.yml
@@ -3,4 +3,5 @@ test-shellcheck:
   image: koalaman/shellcheck-alpine
   needs: []
   script:
-    - shellcheck src/release.sh
\ No newline at end of file
+    - shellcheck src/release.sh
+    - shellcheck src/npm-publish.sh
\ No newline at end of file
diff --git a/src/npm-publish.sh b/src/npm-publish.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8328e0c9cfa167db5df0d75a72abba2d15b52c19
--- /dev/null
+++ b/src/npm-publish.sh
@@ -0,0 +1,11 @@
+#!/bin/bash -e
+
+echo "Setting publish config for scope '@$CI_PROJECT_ROOT_NAMESPACE', project id '$CI_PROJECT_ID'"
+npm config set @$CI_PROJECT_ROOT_NAMESPACE:registry $CI_SERVER_URL/api/v4/packages/npm
+npm config set '//$CI_SERVER_HOST/api/v4/packages/npm/:_authToken' "$CI_JOB_TOKEN"
+npm config set '//$CI_SERVER_HOST/api/v4/projects/$CI_PROJECT_ID/packages/npm/:_authToken' "$CI_JOB_TOKEN"
+
+echo "Publishing package '@$CI_PROJECT_ROOT_NAMESPACE/$CI_PROJECT_NAME' to internal package registry"
+npm publish
+
+echo "Done!"