NPM-OWNER(1)
π NPM-OWNER(1) β the manual page, but make it make sense
ok so bestie, this is npm-owner, straight out of the npm manual (that's the manual name, right up top, hi π). It's your whole guide to who gets to touch your published package. Group-chat admin rights but for npm. Let's go π
β¨ NAME β¨
npm-owner β Manage package owners π«Ά
Synopsis
npm owner add <user> <package-spec>
npm owner rm <user> <package-spec>
npm owner ls <package-spec>
alias: author
ok so there's also an alias, author, in case you were wondering. iykyk π
πΈ DESCRIPTION πΈ
Manage ownership of published packages. That's the whole vibe. Here's the breakdown, bestie:
lsβ List all the users who have access to modify a package and push new versions. Handy when you need to know who to bug for help. Literally the "who do i @ in here" command πaddβ Add a new user as a maintainer of a package. This user is enabled to modify metadata, publish new versions, and add other owners. You're basically handing them the aux cord π₯rmβ Remove a user from the package owner list. This immediately revokes their privileges. no warning, no goodbye text, they're just out π
β οΈ real talk: there is only one level of access. Either you can modify a package, or you can't. No in-between, no "read-only era". Future versions may contain more fine-grained access levels, but that is not implemented at this time. so rn it's all or nothing, periodt.
And if you have two-factor authentication enabled with auth-and-writes (see npm help npm-profile) then you'll need to go through a second factor flow when changing ownership or include an otp on the command line with --otp. annoying? yes. keeping you safe? also yes π
π¦ CONFIGURATION π¦
registry
- Default:
"https://registry.npmjs.org/" - Type:
URL
The base URL of the npm registry. the home base, the main character, the address of where all your packages actually live π
otp
- Default:
null - Type:
nullorString
This is a one-time password from a two-factor authenticator. It's needed when publishing or changing package permissions with npm access.
If not set, and a registry response fails with a challenge for a one-time password, npm will prompt on the command line for one. so it'll just... ask you. politely. β¨
workspace
- Default: (nothing β it's empty)
- Type:
String(can be set multiple times)
Enable running a command in the context of the configured workspaces of the current project while filtering by running only the workspaces defined by this configuration option. it's the "only talk to these children" switch π§
Valid values for the workspace config are either:
- Workspace names
- Path to a workspace directory
- Path to a parent workspace directory (will result in selecting all workspaces within that folder)
When set for the npm init command, this may be set to the folder of a workspace which does not yet exist, to create the folder and set it up as a brand new workspace within the project. manifesting a workspace into existence, we love to see it π
π«Ά heads up: this value is not exported to the environment for child processes.
workspaces
- Default:
null - Type:
nullorBoolean
Set to true to run the command in the context of all configured workspaces. all of them. the whole squad π―
Explicitly setting this to false will cause commands like install to ignore workspaces altogether. When not set explicitly:
- Commands that operate on the
node_modulestree (install,update, etc.) will link workspaces into thenode_modulesfolder. - Commands that do other things (
test,exec,publish, etc.) will operate on the root project, unless one or more workspaces are specified in theworkspaceconfig.
π«Ά again: this value is not exported to the environment for child processes.
π SEE ALSO π
npm help "package spec"npm help profilenpm help publishnpm help registrynpm help login
and that's the whole page, bestie, you ate that π β¨
signing off from NPM@12.2.1, October 2026 β this page is literally NPM-OWNER(1) and it slays ππ
π¦ where this page comes from
- arch rolling: npm 12.2.1-1 Β· Artistic-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms