Server IP : 85.214.239.14 / Your IP : 3.139.93.168 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/2/task/2/root/proc/3/cwd/lib/node_modules/npm/node_modules/libnpmversion/lib/ |
Upload File : |
// called with all the options already set to their defaults const retrieveTag = require('./retrieve-tag.js') const semver = require('semver') const enforceClean = require('./enforce-clean.js') const writeJson = require('./write-json.js') const readJson = require('./read-json.js') const git = require('@npmcli/git') const commit = require('./commit.js') const tag = require('./tag.js') const { log } = require('proc-log') const runScript = require('@npmcli/run-script') module.exports = async (newversion, opts) => { const { path, allowSameVersion, gitTagVersion, ignoreScripts, preid, pkg, } = opts const { valid, clean, inc } = semver const current = pkg.version || '0.0.0' const currentClean = clean(current) let newV if (valid(newversion, { loose: true })) { newV = clean(newversion, { loose: true }) } else if (newversion === 'from-git') { newV = await retrieveTag(opts) } else { newV = inc(currentClean, newversion, { loose: true }, preid) } if (!newV) { throw Object.assign(new Error('Invalid version: ' + newversion), { current, requested: newversion, }) } if (newV === currentClean && !allowSameVersion) { throw Object.assign(new Error('Version not changed'), { current, requested: newversion, newVersion: newV, }) } const isGitDir = newversion === 'from-git' || await git.is(opts) // ok! now we know the new version, and the old version is in pkg // - check if git dir is clean // returns false if we should not keep doing git stuff const doGit = gitTagVersion && isGitDir && await enforceClean(opts) if (!ignoreScripts) { await runScript({ ...opts, pkg, stdio: 'inherit', event: 'preversion', env: { npm_old_version: current, npm_new_version: newV, }, }) } // - update the files pkg.version = newV delete pkg._id await writeJson(`${path}/package.json`, pkg) // try to update shrinkwrap, but ok if this fails const locks = [`${path}/package-lock.json`, `${path}/npm-shrinkwrap.json`] const haveLocks = [] for (const lock of locks) { try { const sw = await readJson(lock) sw.version = newV if (sw.packages && sw.packages['']) { sw.packages[''].version = newV } await writeJson(lock, sw) haveLocks.push(lock) } catch { // ignore errors } } if (!ignoreScripts) { await runScript({ ...opts, pkg, stdio: 'inherit', event: 'version', env: { npm_old_version: current, npm_new_version: newV, }, }) } if (doGit) { // - git add, git commit, git tag await git.spawn(['add', `${path}/package.json`], opts) // sometimes people .gitignore their lockfiles for (const lock of haveLocks) { await git.spawn(['add', lock], opts).catch(() => {}) } await commit(newV, opts) await tag(newV, opts) } else { log.verbose('version', 'Not tagging: not in a git repo or no git cmd') } if (!ignoreScripts) { await runScript({ ...opts, pkg, stdio: 'inherit', event: 'postversion', env: { npm_old_version: current, npm_new_version: newV, }, }) } return newV }