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>v6
Kat Marchán
8 years ago
committed by
Myles Borins
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