Files
gitea-docs/docs/usage/packages/npm.md
FrostKiwi 072331ecae Clarify package permissions and tokens scopes as discussed in https://github.com/go-gitea/gitea/issues/32048 (#72)
This adds explanations, that were missing regarding Token scopes and the packages feature requiring a token with said scope. Also added a missing explanation, that tokens can be created in the user interface, not just the API. The reason this PR is created was due to misunderstandings around the package feature, that arose during the discussion in https://github.com/go-gitea/gitea/issues/32048 .
This PR aims to clarify the misunderstood points around tokens, scopes and the package feature.

During the creation of this PR bug https://github.com/go-gitea/gitea/issues/32078 was found, the scopes are always reported as `null` during the response of the initial `POST` to create the token.

Co-authored-by: Wladislav ヴラド Artsimovich <wladislav.artsimovich@dmgmori.co.jp>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Reviewed-on: https://gitea.com/gitea/docs/pulls/72
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: FrostKiwi <frostkiwi@noreply.gitea.com>
Co-committed-by: FrostKiwi <frostkiwi@noreply.gitea.com>
2025-11-20 22:16:00 +00:00

3.4 KiB

date, slug, sidebar_position
date slug sidebar_position
2021-07-20T00:00:00+00:00 npm 70

NPM Package Registry

Publish npm packages for your user or organization.

Requirements

To work with the npm package registry, you need Node.js coupled with a package manager such as Yarn or npm itself.

The registry supports scoped and unscoped packages.

The following examples use the npm tool with the scope @test.

Configuring the package registry

To register the package registry you need to configure a new package source.

npm config set {scope}:registry=https://gitea.example.com/api/packages/{owner}/npm/
npm config set -- '//gitea.example.com/api/packages/{owner}/npm/:_authToken' "{token}"
Parameter Description
scope The scope of the packages.
owner The owner of the package.
token Your personal access token. With package permissions.

For example:

npm config set @test:registry=https://gitea.example.com/api/packages/testuser/npm/
npm config set -- '//gitea.example.com/api/packages/testuser/npm/:_authToken' "personal_access_token"

or without scope:

npm config set registry https://gitea.example.com/api/packages/testuser/npm/
npm config set -- '//gitea.example.com/api/packages/testuser/npm/:_authToken' "personal_access_token"

Publish a package

Publish a package by running the following command in your project:

npm publish

You cannot publish a package if a package of the same name and version already exists. You must delete the existing package first.

Unpublish a package

Delete a package by running the following command:

npm unpublish {package_name}[@{package_version}]
Parameter Description
package_name The package name.
package_version The package version.

For example:

npm unpublish @test/test_package
npm unpublish @test/test_package@1.0.0

Install a package

To install a package from the package registry, execute the following command:

npm install {package_name}
Parameter Description
package_name The package name.

For example:

npm install @test/test_package

Tag a package

The registry supports version tags which can be managed by npm dist-tag:

npm dist-tag add {package_name}@{version} {tag}
Parameter Description
package_name The package name.
version The version of the package.
tag The tag name.

For example:

npm dist-tag add test_package@1.0.2 release

The tag name must not be a valid version. All tag names which are parsable as a version are rejected.

Search packages

The registry supports searching but does not support special search qualifiers like author:gitea.

Supported commands

npm install
npm ci
npm publish
npm unpublish
npm dist-tag
npm view
npm search