Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nexdrew/rewrite-shrinkwrap-urls
:black_nib: Rewrite URLs in npm-shrinkwrap.json
https://github.com/nexdrew/rewrite-shrinkwrap-urls
npm package-lock registry shrinkwrap urls
Last synced: 2 days ago
JSON representation
:black_nib: Rewrite URLs in npm-shrinkwrap.json
- Host: GitHub
- URL: https://github.com/nexdrew/rewrite-shrinkwrap-urls
- Owner: nexdrew
- License: isc
- Created: 2016-03-15T16:38:55.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-07-15T10:23:54.000Z (over 3 years ago)
- Last Synced: 2024-10-11T17:49:48.431Z (27 days ago)
- Topics: npm, package-lock, registry, shrinkwrap, urls
- Language: JavaScript
- Homepage:
- Size: 165 KB
- Stars: 10
- Watchers: 2
- Forks: 3
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# rewrite-shrinkwrap-urls
> Rewrite URLs in npm-shrinkwrap.json or package-lock.json
[![Build Status](https://travis-ci.org/nexdrew/rewrite-shrinkwrap-urls.svg?branch=master)](https://travis-ci.org/nexdrew/rewrite-shrinkwrap-urls)
[![Coverage Status](https://coveralls.io/repos/github/nexdrew/rewrite-shrinkwrap-urls/badge.svg?branch=master)](https://coveralls.io/github/nexdrew/rewrite-shrinkwrap-urls?branch=master)
[![Greenkeeper badge](https://badges.greenkeeper.io/nexdrew/rewrite-shrinkwrap-urls.svg)](https://greenkeeper.io/)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](https://www.npmjs.com/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:
```console
$ npm install -g rewrite-shrinkwrap-urls
```View help content:
```console
$ rewrite-shrinkwrap-urls --help
Usage: rewrite-shrinkwrap-urls [npm-shrinkwrap.json] -r [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 Base URL of the registry to point URLs at
[required] [string]Options:
-f, --file 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 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`:
```console
$ rewrite-shrinkwrap-urls -r https://private-registry
```The equivalent command for a `package-lock.json` file would be:
```console
$ rewrite-shrinkwrap-urls package-lock.json -r https://private-registry
```Read `npm-shrinkwrap-OLD.json` and write the modified content to `npm-shrinkwrap-NEW.json`:
```console
$ rewrite-shrinkwrap-urls npm-shrinkwrap-OLD.json -r https://private-registry -f npm-shrinkwrap-NEW.json
```Read shrinkwrap file from stdin and output the modified content to stdout:
```console
$ 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`:
```console
$ npm install --save rewrite-shrinkwrap-urls
```Use the module to synchronously modify an object in-place:
```js
// 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`: object
Content from a shrinkwrap or package-lock file, as an object in memory.
- `opts`: object
Options object.
#### Options
- `newBaseUrl`: string
Base URL of new registry to point package URLs at. Default is `'http://localhost:8080'`.
- `public`: boolean
Whether to use public registry style URLs or not. A public registry tarball URL looks like `https://registry.npmjs.org/through/-/through-2.3.8.tgz` while a private registry tarball URL looks like `http://localhost:8080/t/through/_attachments/through-2.3.8.tgz`. Default is `false` (use private registry URL style).
- `transformer`: function
A 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`: string
- `oldUrl`: string
- `packageName`: string
- `version`: stringReturns the desired URL as a string
- `syncFrom`: boolean
Whether 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