rewrite-shrinkwrap-urls v1.1.0
rewrite-shrinkwrap-urls
Rewrite URLs in npm-shrinkwrap.json or package-lock.json
Sometimes it's necessary to update the "resolved" URLs in an npm-shrinkwrap.json file or a package-lock.json file - for instance, when you want to point all packages to a private npm registry like npm Enterprise.
This package provides a tool to do just that. It comes with a convenient CLI, but it can be easily used as a module in some other grander logic as well.
Install and Usage
CLI
Install as global (binary) module:
$ npm install -g rewrite-shrinkwrap-urlsView help content:
$ rewrite-shrinkwrap-urls --help
Usage: rewrite-shrinkwrap-urls [npm-shrinkwrap.json] -r <registry> [options]
Arguments:
[npm-shrinkwrap.json] The input shrinkwrap file containing urls to
rewrite. You can omit this if --stdin is used.
[file] [default: npm-shrinkwrap.json]
Required:
-r, --registry <registry> Base URL of the registry to point URLs at
[required] [string]
Options:
-f, --file <output> Path of file to write modified shrinkwrap to,
defaults to input file
[file]
-i, --stdin Read shrinkwrap file contents from stdin
[boolean]
-o, --stdout Write modified shrinkwrap content to stdout instead
of file
[boolean]
-p, --public Use public registry style URLs. Omit this flag when
rewriting to npm Enterprise.
[boolean]
-s, --spaces <num> Number of spaces per JSON indent of output
[number] [default: 2]
-m, --from Sync the "from" field with the "resolved" field
(both will be the rewritten URL)
[boolean]
-h, --help Show help
[commands: help] [boolean]
-v, --version Show version number
[commands: version] [boolean]Rewrite all URLs in the current directory's npm-shrinkwrap.json, pointing to the private registry at https://private-registry:
$ rewrite-shrinkwrap-urls -r https://private-registryThe equivalent command for a package-lock.json file would be:
$ rewrite-shrinkwrap-urls package-lock.json -r https://private-registryRead npm-shrinkwrap-OLD.json and write the modified content to npm-shrinkwrap-NEW.json:
$ rewrite-shrinkwrap-urls npm-shrinkwrap-OLD.json -r https://private-registry -f npm-shrinkwrap-NEW.jsonRead shrinkwrap file from stdin and output the modified content to stdout:
$ rewrite-shrinkwrap-urls -r localhost:8080 -i < npm-shrinkwrap.json
$ cat npm-shrinkwrap.json | rewrite-shrinkwrap-urls -r localhost:8080 -Module
Install to local node_modules directory and add dependency to package.json:
$ npm install --save rewrite-shrinkwrap-urlsUse the module to synchronously modify an object in-place:
// require the module
var rewriteShrinkwrapUrls = require('rewrite-shrinkwrap-urls')
// read shrinkwrap object into memory
var shrinkwrap = JSON.parse(require('fs').readFileSync('npm-shrinkwrap.json', { encoding: 'utf8' }))
// modify the shrinkwrap object synchronously
rewriteShrinkwrapUrls(shrinkwrap, { newBaseUrl: 'https://private-registry' })
// do something with shrinkwrap
console.log(shrinkwrap)API
rewriteShrinkwrapUrls(shrinkwrap, opts)
Arguments
shrinkwrap: objectContent from a shrinkwrap or package-lock file, as an object in memory.
opts: objectOptions object.
Options
newBaseUrl: stringBase URL of new registry to point package URLs at. Default is
'http://localhost:8080'.public: booleanWhether to use public registry style URLs or not. A public registry tarball URL looks like
https://registry.npmjs.org/through/-/through-2.3.8.tgzwhile a private registry tarball URL looks likehttp://localhost:8080/t/through/_attachments/through-2.3.8.tgz. Default isfalse(use private registry URL style).transformer: functionA function that will be called for each modified URL, allowing any custom check or modification to be done. The default function simply returns the
newUrl.Arguments:
newUrl: stringoldUrl: stringpackageName: stringversion: stringReturns the desired URL as a string
syncFrom: booleanWhether to sync the
"from"field with the"resolved"field for each dependency in the shrinkwrap content. Syncing them means that both fields will updated/rewritten to the new URL.
License
ISC © Contributors