Detalhes do pacote

libnpmversion

npm2.3mISC8.0.1

library to do the things that 'npm version' does

readme (leia-me)

libnpmversion

npm version license CI - libnpmversion

Library to do the things that 'npm version' does.

USAGE

const npmVersion = require('libnpmversion')

// argument can be one of:
// - any semver version string (set to that exact version)
// - 'major', 'minor', 'patch', 'pre{major,minor,patch}' (increment at
//   that value)
// - 'from-git' (set to the latest semver-lookin git tag - this skips
//   gitTagVersion, but will still sign if asked)
npmVersion(arg, {
  path: '/path/to/my/pkg', // defaults to cwd

  allowSameVersion: false, // allow tagging/etc to the current version
  preid: '', // when arg=='pre', define the prerelease string, like 'beta' etc.
  tagVersionPrefix: 'v', // tag as 'v1.2.3' when versioning to 1.2.3
  commitHooks: true, // default true, run git commit hooks, default true
  gitTagVersion: true, // default true, tag the version
  signGitCommit: false, // default false, gpg sign the git commit
  signGitTag: false, // default false, gpg sign the git tag
  force: false, // push forward recklessly if any problems happen
  ignoreScripts: false, // do not run pre/post/version lifecycle scripts
  scriptShell: '/bin/bash', // shell to run lifecycle scripts in
  message: 'v%s', // message for tag and commit, replace %s with the version
}).then(newVersion => {
  console.error('version updated!', newVersion)
})

Description

Run this in a package directory to bump the version and write the new data back to package.json, package-lock.json, and, if present, npm-shrinkwrap.json.

The newversion argument should be a valid semver string, a valid second argument to semver.inc (one of patch, minor, major, prepatch, preminor, premajor, prerelease), or from-git. In the second case, the existing version will be incremented by 1 in the specified field. from-git will try to read the latest git tag, and use that as the new npm version.

If run in a git repo, it will also create a version commit and tag. This behavior is controlled by gitTagVersion (see below), and can be disabled by setting gitTagVersion: false in the options. It will fail if the working directory is not clean, unless force: true is set.

If supplied with a message string option, it will use it as a commit message when creating a version commit. If the message option contains %s then that will be replaced with the resulting version number.

If the signGitTag option is set, then the tag will be signed using the -s flag to git. Note that you must have a default GPG key set up in your git config for this to work properly.

If preversion, version, or postversion are in the scripts property of the package.json, they will be executed in the appropriate sequence.

The exact order of execution is as follows:

  1. Check to make sure the git working directory is clean before we get started. Your scripts may add files to the commit in future steps. This step is skipped if the force flag is set.
  2. Run the preversion script. These scripts have access to the old version in package.json. A typical use would be running your full test suite before deploying. Any files you want added to the commit should be explicitly added using git add.
  3. Bump version in package.json as requested (patch, minor, major, explicit version number, etc).
  4. Run the version script. These scripts have access to the new version in package.json (so they can incorporate it into file headers in generated files for example). Again, scripts should explicitly add generated files to the commit using git add.
  5. Commit and tag.
  6. Run the postversion script. Use it to clean up the file system or automatically push the commit and/or tag.

Take the following example:

{
  "scripts": {
    "preversion": "npm test",
    "version": "npm run build && git add -A dist",
    "postversion": "git push && git push --tags && rm -rf build/temp"
  }
}

This runs all your tests, and proceeds only if they pass. Then runs your build script, and adds everything in the dist directory to the commit. After the commit, it pushes the new commit and tag up to the server, and deletes the build/temp directory.

API

npmVersion(newversion, options = {}) -> Promise<String>

Do the things. Returns a promise that resolves to the new version if all is well, or rejects if any errors are encountered.

Options

path String

The path to the package being versionified. Defaults to process.cwd().

allowSameVersion Boolean

Allow setting the version to the current version in package.json. Default false.

preid String

When the newversion is pre, premajor, preminor, or prepatch, this defines the prerelease string, like 'beta' etc.

tagVersionPrefix String

The prefix to add to the raw semver string for the tag name. Defaults to 'v'. (So, by default it tags as 'v1.2.3' when versioning to 1.2.3.)

commitHooks Boolean

Run git commit hooks. Default true.

gitTagVersion Boolean

Tag the version, default true.

signGitCommit Boolean

GPG sign the git commit. Default false.

signGitTag Boolean

GPG sign the git tag. Default false.

force Boolean

Push forward recklessly if any problems happen. Default false.

ignoreScripts Boolean

Do not run pre/post/version lifecycle scripts. Default false.

scriptShell String

Path to the shell, which should execute the lifecycle scripts. Defaults to /bin/sh on unix, or cmd.exe on windows.

message String

The message for the git commit and annotated git tag that are created.

changelog (log de mudanças)

Changelog

11.4.1 (2025-05-21)

Documentation

  • 3ed764a #8308 Clarify script working directory behavior (fixes #8305) (#8308) (@tarekwfa0110, @owlstronaut)

    Chores

  • 2f30251 #8314 remove references to skimdb.npmjs.com (#8314) (@shmam)
  • 9cb9d50 #8298 add contributor to changelog entry (#8298) (@wraithgar)

Dependencies

11.4.0 (2025-05-15)

Features

11.3.0 (2025-04-08)

Features

11.2.0 (2025-03-05)

Features

11.1.0 (2025-01-29)

Features

  • 7f6c997 #8009 add dry-run to deprecate/undeprecate commands (@wraithgar)
  • 1764a37 #8009 add npm undeprecate command (@wraithgar)

    Bug Fixes

  • 31455b2 #8054 publish: honor force for no dist tag and registry version check (#8054) (@reggi)
  • dc31c1b #8038 remove max-len linting bypasses (@wraithgar)
  • 8a911ff #8038 publish: disregard deprecated versions when calculating highest version (@wraithgar)
  • 7f72944 #8038 publish: accept publishConfig.tag to override highes semver check (@wraithgar)
  • ab9ddc0 #7992 sbom: deduplicate sbom dependencies (#7992) (@bdehamer)
  • f7da341 #7980 search: properly display multiple search terms (#7980) (@wraithgar)

    Documentation

  • 3644e79 #8055 update readme for Node.js versions, remove badges (#8055) (@wraithgar)
  • f1af61f #8041 fix typos in "package-json" (#8041) (@maxkoryukov)
  • e90c6fe #8051 depth flag default value (#8051) (@milaninfy)
  • 866b5ee #8030 safer documentation urls, repos, packages (#8030) (@reggi)

    Dependencies

  • 7ddfbad #8053 @npmcli/package-json@6.1.1
  • 9473a86 #8053 spdx-license-ids@3.0.21
  • a65e5ce #8053 @sigstore/protobuf-specs@0.3.3
  • 215ebe4 #8053 chalk@5.4.1

    Chores

  • 61f00e3 #8069 splits out smoke-tests from publish-dryrun tests (#8069) (@reggi)
  • 6d0f46e #8058 stop publish smoke from check git clean (#8058) (@reggi)
  • 9281ebf #8057 fix smoke tests prerelease needs separate string args (#8057) (@reggi)
  • aa202e9 #8056 smoke tests using a preid (#8056) (@reggi)
  • 18e0449 #8053 dev dependency updates (@wraithgar)
  • 859a71c #8052 update node versions for release integration tests (#8052) (@wraithgar)
  • 7e7961d #8038 bump @npmcli/eslint-config to 5.1.0 (@wraithgar)
  • workspace: @npmcli/config@10.0.1

11.0.0 (2024-12-16)

Documentation

11.0.0-pre.1 (2024-12-06)

⚠️ BREAKING CHANGES

  • Upon publishing, in order to apply a default "latest" dist tag, the command now retrieves all prior versions of the package. It will require that the version you're trying to publish is above the latest semver version in the registry, not including pre-release tags.
  • npm init now has a type prompt, and sorts the entries the created packages differently
  • bun.lockb files are now included in the strict ignore list during packing

    Features

  • f3ac7b7 #7939 no implicit latest tag on publish when latest > version (#7939) (@reggi, @ljharb)

    Bug Fixes

  • e362c6d #7944 prefix: remove duplicate -g from usage output (#7944) (@wraithgar)

    Documentation

  • 2af31dd #7947 change certfile to cafile (#7947) (@wraithgar)
  • 1be8e95 #7945 update ignore rules (@wraithgar)

    Dependencies

  • bc9b14d #7955 @npmcli/run-script@9.0.2
  • fecfcf4 #7955 node-gyp@11.0.0
  • 8905037 #7955 p-map@7.0.2
  • ac8eb39 #7955 diff@7.0.0
  • c0bcc2a #7955 walk-up-path@4.0.0
  • d463a6f #7955 init-package-json@8.0.0
  • b87ba24 #7945 @npmcli/package-json@6.1.0
  • 4bf1901 #7945 @npmcli/metavuln-calculator@9.0.0
  • ca84b22 #7945 pacote@21.0.0
  • 4906f3d #7945 npm-packlist@10.0.0

    Chores

  • cfdf214 #7943 fork changelog (#7943) (@wraithgar)
  • workspace: @npmcli/arborist@9.0.0-pre.1
  • workspace: @npmcli/config@10.0.0-pre.1
  • workspace: libnpmdiff@8.0.0-pre.1
  • workspace: libnpmexec@10.0.0-pre.1
  • workspace: libnpmfund@7.0.0-pre.1
  • workspace: libnpmorg@8.0.0-pre.1
  • workspace: libnpmpack@9.0.0-pre.1

11.0.0-pre.0 (2024-11-26)

⚠️ BREAKING CHANGES

  • When publishing a package with a pre-release version, you must explicitly specify a tag.
  • --ignore-scripts now applies to all lifecycle scripts, include prepare
  • npm will no longer fall back to the old audit endpoint if the bulk advisory request fails.
  • npm will no longer switch to global mode if aliased to "npmg" or "npm-g" etc.
  • The npm hook command has been removed
  • Attestations made by this package will no longer validate in npm versions prior to 10.6.0
  • npm now supports node ^20.17.0 || >=22.9.0
  • @npmcli/docs now supports node ^20.17.0 || >=22.9.0

    Features

  • 6995303 #7850 adds --ignore-scripts flag to pack (@reggi)

    Bug Fixes

  • 16b7367 #7910 publishing prerelease requires explicit tag (#7910) (@reggi)
  • e19bff0 #7901 perf: enable compile cache if present (#7901) (@H4ad)
  • 080a0f2 #7911 remove old audit fallback request (@wraithgar)
  • 780afc5 #7855 pkg: display if any of multiple attributes exist (#7855) (@Sanderovich)
  • ecd2d23 #7842 don't go into global mode if aliased to npmg (#7842) (@wraithgar)
  • 62c71e5 #7835 removes npm hook command (@reggi)
  • 7f541e8 #7815 make pack and exec work with git hash refs (#7815) (@milaninfy)
  • 3162620 #7831 sets node engine range to ^20.17.0 || >=22.9.0 (@reggi)
  • 4c8ba0a #7831 for @npmcli/docs sets node engine range to ^20.17.0 || >=22.9.0 (@reggi)
  • 70cd88d #7808 view: sort and truncate dist-tags (#7808) (@wraithgar)
  • 534ad77 #7795 remove unused parameters catch statements (#7795) (@btea)

    Documentation

  • feb54f7 #7822 package.json: add libc field (#7822) (@wraithgar)

    Dependencies

  • 78293ad #7937 spdx-license-ids@3.0.20
  • 33cf580 #7937 promise-call-limit@3.0.2
  • ef1c368 #7937 package-json-from-dist@1.0.1
  • 92e6f07 #7937 npm-registry-fetch@18.0.2
  • e32284a #7937 npm-install-checks@7.1.1
  • 5dffd11 #7937 negotiator@0.6.4
  • 69d9f01 #7937 make-fetch-happen@14.0.3
  • 884bbde #7937 hosted-git-info@8.0.2
  • 3c74ec0 #7937 debug@4.3.7
  • f00359f #7937 cross-spawn@7.0.6
  • 534bbe8 #7937 ci-info@4.1.0
  • 8cbf1a7 #7937 @npmcli/promise-spawn@8.0.2
  • 1bd39e7 #7937 @npmcli/map-workspaces@4.0.2
  • eb6498d #7937 ansi-regex@6.1.0
  • 66fc8c9 #7850 @npmcli/metavuln-calculator@8.0.1
  • 7dbef6f #7850 pacote@20.0.0
  • 75a3f12 #7859 remove unused deps (#7859)
  • f36dc59 #7833 pacote@19.0.1
  • 7ee15bb #7833 bump sigstore from 2.x to 3.0.0 (@bdehamer)

    Chores

  • 2d530a5 #7941 tests: account for when npm is a prerelease (#7941) (@wraithgar)
  • 2c1b369 #7937 dev dependency updates (@wraithgar)
  • 6edfe2f #7937 @npmcli/template-oss@4.23.5 (@wraithgar)
  • 475285b #7920 clean up dependency graph repos (#7920) (@hashtagchris)
  • ec57f5f #7911 fix dependencies script for circular workspace deps (@wraithgar)
  • ccd8420 #7911 fix cli tests for audit fallback removal (@wraithgar)
  • 720b4d8 #7833 bump @npmcli/arborist to 8.0.0 (@wraithgar)
  • 286739c #7824 add creation of a DEPENDENCIES.json file (#7824) (@reggi)
  • 852dd8b #7831 sets npm 11 to prerelase (@reggi)
  • 95d009e #7831 update engine ^20.17.0 || >=22.9.0 in actions (@reggi)
  • 5a74478 #7831 update engines ^20.17.0 || >=22.9.0 in package template (@reggi)
  • workspace: @npmcli/arborist@9.0.0-pre.0
  • workspace: @npmcli/config@10.0.0-pre.0
  • workspace: libnpmaccess@10.0.0-pre.0
  • workspace: libnpmdiff@8.0.0-pre.0
  • workspace: libnpmexec@10.0.0-pre.0
  • workspace: libnpmfund@7.0.0-pre.0
  • workspace: libnpmorg@8.0.0-pre.0
  • workspace: libnpmpack@9.0.0-pre.0
  • workspace: libnpmpublish@11.0.0-pre.0
  • workspace: libnpmsearch@9.0.0-pre.0
  • workspace: libnpmteam@8.0.0-pre.0
  • workspace: libnpmversion@8.0.0-pre.0