mirror of https://github.com/lukechilds/node.git
Browse Source
PR-URL: https://github.com/nodejs/node/pull/10330 Reviewed-By: Myles Borins <myles.borins@gmail.com>v7.x
committed by
Evan Lucas
719 changed files with 38691 additions and 13904 deletions
File diff suppressed because it is too large
File diff suppressed because it is too large
@ -1,61 +0,0 @@ |
|||
npm-tag(1) -- Tag a published version |
|||
===================================== |
|||
|
|||
## SYNOPSIS |
|||
|
|||
[DEPRECATED] npm tag <name>@<version> [<tag>] |
|||
See `dist-tag` |
|||
|
|||
## DESCRIPTION |
|||
|
|||
THIS COMMAND IS DEPRECATED. See npm-dist-tag(1) for details. |
|||
|
|||
Tags the specified version of the package with the specified tag, or the |
|||
`--tag` config if not specified. |
|||
|
|||
A tag can be used when installing packages as a reference to a version instead |
|||
of using a specific version number: |
|||
|
|||
npm install <name>@<tag> |
|||
|
|||
When installing dependencies, a preferred tagged version may be specified: |
|||
|
|||
npm install --tag <tag> |
|||
|
|||
This also applies to `npm dedupe`. |
|||
|
|||
Publishing a package always sets the "latest" tag to the published version. |
|||
|
|||
## PURPOSE |
|||
|
|||
Tags can be used to provide an alias instead of version numbers. For |
|||
example, `npm` currently uses the tag "next" to identify the upcoming |
|||
version, and the tag "latest" to identify the current version. |
|||
|
|||
A project might choose to have multiple streams of development, e.g., |
|||
"stable", "canary". |
|||
|
|||
## CAVEATS |
|||
|
|||
Tags must share a namespace with version numbers, because they are |
|||
specified in the same slot: `npm install <pkg>@<version>` vs `npm |
|||
install <pkg>@<tag>`. |
|||
|
|||
Tags that can be interpreted as valid semver ranges will be |
|||
rejected. For example, `v1.4` cannot be used as a tag, because it is |
|||
interpreted by semver as `>=1.4.0 <1.5.0`. See |
|||
<https://github.com/npm/npm/issues/6082>. |
|||
|
|||
The simplest way to avoid semver problems with tags is to use tags |
|||
that do not begin with a number or the letter `v`. |
|||
|
|||
## SEE ALSO |
|||
|
|||
* npm-publish(1) |
|||
* npm-install(1) |
|||
* npm-dedupe(1) |
|||
* npm-registry(7) |
|||
* npm-config(1) |
|||
* npm-config(7) |
|||
* npm-dist-tag(1) |
|||
* npmrc(5) |
@ -1,67 +0,0 @@ |
|||
<!doctype html> |
|||
<html> |
|||
<title>npm-tag</title> |
|||
<meta charset="utf-8"> |
|||
<link rel="stylesheet" type="text/css" href="../../static/style.css"> |
|||
<link rel="canonical" href="https://www.npmjs.org/doc/cli/npm-tag.html"> |
|||
<script async=true src="../../static/toc.js"></script> |
|||
|
|||
<body> |
|||
<div id="wrapper"> |
|||
|
|||
<h1><a href="../cli/npm-tag.html">npm-tag</a></h1> <p>Tag a published version</p> |
|||
<h2 id="synopsis">SYNOPSIS</h2> |
|||
<pre><code>[DEPRECATED] npm tag <name>@<version> [<tag>] |
|||
See `dist-tag` |
|||
</code></pre><h2 id="description">DESCRIPTION</h2> |
|||
<p>THIS COMMAND IS DEPRECATED. See <a href="../cli/npm-dist-tag.html">npm-dist-tag(1)</a> for details.</p> |
|||
<p>Tags the specified version of the package with the specified tag, or the |
|||
<code>--tag</code> config if not specified.</p> |
|||
<p>A tag can be used when installing packages as a reference to a version instead |
|||
of using a specific version number:</p> |
|||
<pre><code>npm install <name>@<tag> |
|||
</code></pre><p>When installing dependencies, a preferred tagged version may be specified:</p> |
|||
<pre><code>npm install --tag <tag> |
|||
</code></pre><p>This also applies to <code>npm dedupe</code>.</p> |
|||
<p>Publishing a package always sets the "latest" tag to the published version.</p> |
|||
<h2 id="purpose">PURPOSE</h2> |
|||
<p>Tags can be used to provide an alias instead of version numbers. For |
|||
example, <code>npm</code> currently uses the tag "next" to identify the upcoming |
|||
version, and the tag "latest" to identify the current version.</p> |
|||
<p>A project might choose to have multiple streams of development, e.g., |
|||
"stable", "canary".</p> |
|||
<h2 id="caveats">CAVEATS</h2> |
|||
<p>Tags must share a namespace with version numbers, because they are |
|||
specified in the same slot: <code>npm install <pkg>@<version></code> vs <code>npm |
|||
install <pkg>@<tag></code>.</p> |
|||
<p>Tags that can be interpreted as valid semver ranges will be |
|||
rejected. For example, <code>v1.4</code> cannot be used as a tag, because it is |
|||
interpreted by semver as <code>>=1.4.0 <1.5.0</code>. See |
|||
<a href="https://github.com/npm/npm/issues/6082">https://github.com/npm/npm/issues/6082</a>.</p> |
|||
<p>The simplest way to avoid semver problems with tags is to use tags |
|||
that do not begin with a number or the letter <code>v</code>.</p> |
|||
<h2 id="see-also">SEE ALSO</h2> |
|||
<ul> |
|||
<li><a href="../cli/npm-publish.html">npm-publish(1)</a></li> |
|||
<li><a href="../cli/npm-install.html">npm-install(1)</a></li> |
|||
<li><a href="../cli/npm-dedupe.html">npm-dedupe(1)</a></li> |
|||
<li><a href="../misc/npm-registry.html">npm-registry(7)</a></li> |
|||
<li><a href="../cli/npm-config.html">npm-config(1)</a></li> |
|||
<li><a href="../misc/npm-config.html">npm-config(7)</a></li> |
|||
<li><a href="../cli/npm-dist-tag.html">npm-dist-tag(1)</a></li> |
|||
<li><a href="../files/npmrc.html">npmrc(5)</a></li> |
|||
</ul> |
|||
|
|||
</div> |
|||
|
|||
<table border=0 cellspacing=0 cellpadding=0 id=npmlogo> |
|||
<tr><td style="width:180px;height:10px;background:rgb(237,127,127)" colspan=18> </td></tr> |
|||
<tr><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td><td style="width:40px;height:10px;background:#fff" colspan=4> </td><td rowspan=4 style="width:10px;height:10px;background:rgb(237,127,127)"> </td><td colspan=6 style="width:60px;height:10px;background:#fff"> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=4> </td></tr> |
|||
<tr><td colspan=2 style="width:20px;height:30px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=4 colspan=2> </td><td style="width:10px;height:20px;background:rgb(237,127,127)" rowspan=2> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:20px;height:10px;background:#fff" rowspan=3 colspan=2> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td><td style="width:10px;height:10px;background:#fff" rowspan=3> </td><td style="width:10px;height:10px;background:rgb(237,127,127)" rowspan=3> </td></tr> |
|||
<tr><td style="width:10px;height:10px;background:#fff" rowspan=2> </td></tr> |
|||
<tr><td style="width:10px;height:10px;background:#fff"> </td></tr> |
|||
<tr><td style="width:60px;height:10px;background:rgb(237,127,127)" colspan=6> </td><td colspan=10 style="width:10px;height:10px;background:rgb(237,127,127)"> </td></tr> |
|||
<tr><td colspan=5 style="width:50px;height:10px;background:#fff"> </td><td style="width:40px;height:10px;background:rgb(237,127,127)" colspan=4> </td><td style="width:90px;height:10px;background:#fff" colspan=9> </td></tr> |
|||
</table> |
|||
<p id="footer">npm-tag — npm@3.10.10</p> |
|||
|
@ -1,105 +0,0 @@ |
|||
module.exports = updateIndex |
|||
|
|||
var fs = require('graceful-fs') |
|||
var assert = require('assert') |
|||
var path = require('path') |
|||
var mkdir = require('mkdirp') |
|||
var chownr = require('chownr') |
|||
var npm = require('../npm.js') |
|||
var log = require('npmlog') |
|||
var cacheFile = require('npm-cache-filename') |
|||
var getCacheStat = require('./get-stat.js') |
|||
var mapToRegistry = require('../utils/map-to-registry.js') |
|||
var pulseTillDone = require('../utils/pulse-till-done.js') |
|||
var parseJSON = require('../utils/parse-json.js') |
|||
|
|||
/* /-/all is special. |
|||
* It uses timestamp-based caching and partial updates, |
|||
* because it is a monster. |
|||
*/ |
|||
function updateIndex (staleness, cb) { |
|||
assert(typeof cb === 'function', 'must pass callback to updateIndex') |
|||
|
|||
mapToRegistry('-/all', npm.config, function (er, uri, auth) { |
|||
if (er) return cb(er) |
|||
|
|||
var params = { |
|||
timeout: staleness, |
|||
follow: true, |
|||
staleOk: true, |
|||
auth: auth |
|||
} |
|||
var cacheBase = cacheFile(npm.config.get('cache'))(uri) |
|||
var cachePath = path.join(cacheBase, '.cache.json') |
|||
log.info('updateIndex', cachePath) |
|||
|
|||
getCacheStat(function (er, st) { |
|||
if (er) return cb(er) |
|||
|
|||
mkdir(cacheBase, function (er, made) { |
|||
if (er) return cb(er) |
|||
|
|||
fs.readFile(cachePath, function (er, data) { |
|||
if (er) { |
|||
log.warn('', 'Building the local index for the first time, please be patient') |
|||
return updateIndex_(uri, params, {}, cachePath, cb) |
|||
} |
|||
|
|||
chownr(made || cachePath, st.uid, st.gid, function (er) { |
|||
if (er) return cb(er) |
|||
|
|||
data = parseJSON.noExceptions(data) |
|||
if (!data) { |
|||
fs.writeFile(cachePath, '{}', function (er) { |
|||
if (er) return cb(new Error('Broken cache.')) |
|||
|
|||
log.warn('', 'Building the local index for the first time, please be patient') |
|||
return updateIndex_(uri, params, {}, cachePath, cb) |
|||
}) |
|||
} |
|||
|
|||
var t = +data._updated || 0 |
|||
// use the cache and update in the background if it's not too old
|
|||
if (Date.now() - t < 60000) { |
|||
cb(null, data) |
|||
cb = function () {} |
|||
} |
|||
|
|||
if (t === 0) { |
|||
log.warn('', 'Building the local index for the first time, please be patient') |
|||
} else { |
|||
log.verbose('updateIndex', 'Cached search data present with timestamp', t) |
|||
uri += '/since?stale=update_after&startkey=' + t |
|||
} |
|||
updateIndex_(uri, params, data, cachePath, cb) |
|||
}) |
|||
}) |
|||
}) |
|||
}) |
|||
}) |
|||
} |
|||
|
|||
function updateIndex_ (all, params, data, cachePath, cb) { |
|||
log.silly('update-index', 'fetching', all) |
|||
npm.registry.request(all, params, pulseTillDone('updateIndex', function (er, updates, _, res) { |
|||
if (er) return cb(er, data) |
|||
|
|||
var headers = res.headers |
|||
var updated = updates._updated || Date.parse(headers.date) |
|||
|
|||
Object.keys(updates).forEach(function (p) { data[p] = updates[p] }) |
|||
|
|||
data._updated = updated |
|||
getCacheStat(function (er, st) { |
|||
if (er) return cb(er) |
|||
|
|||
fs.writeFile(cachePath, JSON.stringify(data), function (er) { |
|||
delete data._updated |
|||
if (er) return cb(er) |
|||
chownr(cachePath, st.uid, st.gid, function (er) { |
|||
cb(er, data) |
|||
}) |
|||
}) |
|||
}) |
|||
})) |
|||
} |
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue