mirror of https://github.com/nodejs/node.git
Merge remote-tracking branch 'origin/v0.8'
Conflicts: ChangeLog src/node_version.h test/message/stdin_messages.out tools/install.py
This commit is contained in:
commit
a177f55b0c
2
AUTHORS
2
AUTHORS
|
@ -354,3 +354,5 @@ Pavel Lang <langpavel@phpskelet.org>
|
|||
Peter Rybin <peter.rybin@gmail.com>
|
||||
Eugen Dueck <eugen@dueck.org>
|
||||
Gil Pedersen <git@gpost.dk>
|
||||
Tyler Neylon <tylerneylon@gmail.com>
|
||||
Golo Roden <webmaster@goloroden.de>
|
||||
|
|
48
ChangeLog
48
ChangeLog
|
@ -21,7 +21,53 @@
|
|||
* Fix #3521 Make process.env more like a regular Object (isaacs)
|
||||
|
||||
|
||||
2012.08.02, Version 0.8.5 (Stable)
|
||||
2012.08.15, Version 0.8.7 (Stable)
|
||||
|
||||
* npm: Upgrade to 1.1.49
|
||||
|
||||
* website: download page (Golo Roden)
|
||||
|
||||
* crypto: fix uninitialized memory access in openssl (Ben Noordhuis)
|
||||
|
||||
* buffer, crypto: fix buffer decoding (Ben Noordhuis)
|
||||
|
||||
* build: compile with -fno-tree-vrp when gcc >= 4.0 (Ben Noordhuis)
|
||||
|
||||
* tls: handle multiple CN fields when verifying cert (Ben Noordhuis)
|
||||
|
||||
* doc: remove unused util from child_process (Kyle Robinson Young)
|
||||
|
||||
* build: rework -fvisibility=hidden detection (Ben Noordhuis)
|
||||
|
||||
* windows: don't duplicate invalid stdio handles (Bert Belder)
|
||||
|
||||
* windows: fix typos in process-stdio.c (Bert Belder)
|
||||
|
||||
|
||||
2012.08.07, Version 0.8.6 (Stable), 0544a586ca6b6b900a42e164033dbf350765700a
|
||||
|
||||
* npm: Upgrade to v1.1.48
|
||||
|
||||
* Add 'make binary' to build binary tarballs for all Unixes (Nathan Rajlich)
|
||||
|
||||
* zlib: Emit 'close' on destroy(). (Dominic Tarr)
|
||||
|
||||
* child_process: Fix stdout=null when stdio=['pipe'] (Tyler Neylon)
|
||||
|
||||
* installer: prevent ETXTBSY errors (Ben Noordhuis)
|
||||
|
||||
* installer: honor --without-npm, default install path (Ben Noordhuis)
|
||||
|
||||
* net: make pause work with connecting sockets (Bert Belder)
|
||||
|
||||
* installer: fix cross-compile installs (Ben Noordhuis)
|
||||
|
||||
* net: fix .listen({fd:0}) (Ben Noordhuis)
|
||||
|
||||
* windows: map WSANO_DATA to UV_ENOENT (Bert Belder)
|
||||
|
||||
|
||||
2012.08.02, Version 0.8.5 (Stable), 9b86a4453f0c76f2707a75c0b2343aba33ec63bc
|
||||
|
||||
* node: tag Encode and friends NODE_EXTERN (Ben Noordhuis)
|
||||
|
||||
|
|
81
Makefile
81
Makefile
|
@ -114,7 +114,7 @@ apidoc_sources = $(wildcard doc/api/*.markdown)
|
|||
apidocs = $(addprefix out/,$(apidoc_sources:.markdown=.html)) \
|
||||
$(addprefix out/,$(apidoc_sources:.markdown=.json))
|
||||
|
||||
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets out/doc/about out/doc/community out/doc/logos out/doc/images
|
||||
apidoc_dirs = out/doc out/doc/api/ out/doc/api/assets out/doc/about out/doc/community out/doc/download out/doc/logos out/doc/images
|
||||
|
||||
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))
|
||||
|
||||
|
@ -132,6 +132,7 @@ website_files = \
|
|||
out/doc/pipe.css \
|
||||
out/doc/about/index.html \
|
||||
out/doc/community/index.html \
|
||||
out/doc/download/index.html \
|
||||
out/doc/logos/index.html \
|
||||
out/doc/changelog.html \
|
||||
$(doc_images)
|
||||
|
@ -192,8 +193,22 @@ docclean:
|
|||
-rm -rf out/doc
|
||||
|
||||
VERSION=v$(shell $(PYTHON) tools/getnodeversion.py)
|
||||
RELEASE=$(shell $(PYTHON) tools/getnodeisrelease.py)
|
||||
PLATFORM=$(shell uname | tr '[:upper:]' '[:lower:]')
|
||||
ifeq ($(findstring x86_64,$(shell uname -m)),x86_64)
|
||||
DESTCPU ?= x64
|
||||
else
|
||||
DESTCPU ?= ia32
|
||||
endif
|
||||
ifeq ($(DESTCPU),x64)
|
||||
ARCH=x64
|
||||
else
|
||||
ARCH=x86
|
||||
endif
|
||||
TARNAME=node-$(VERSION)
|
||||
TARBALL=$(TARNAME).tar.gz
|
||||
BINARYNAME=$(TARNAME)-$(PLATFORM)-$(ARCH)
|
||||
BINARYTAR=$(BINARYNAME).tar.gz
|
||||
PKG=out/$(TARNAME).pkg
|
||||
packagemaker=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
|
||||
|
||||
|
@ -201,9 +216,31 @@ dist: doc $(TARBALL) $(PKG)
|
|||
|
||||
PKGDIR=out/dist-osx
|
||||
|
||||
release-only:
|
||||
@if [ "$(shell git status --porcelain | egrep -v '^\?\? ')" = "" ]; then \
|
||||
exit 0 ; \
|
||||
else \
|
||||
echo "" >&2 ; \
|
||||
echo "The git repository is not clean." >&2 ; \
|
||||
echo "Please commit changes before building release tarball." >&2 ; \
|
||||
echo "" >&2 ; \
|
||||
git status --porcelain | egrep -v '^\?\?' >&2 ; \
|
||||
echo "" >&2 ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@if [ "$(RELEASE)" = "1" ]; then \
|
||||
exit 0; \
|
||||
else \
|
||||
echo "" >&2 ; \
|
||||
echo "#NODE_VERSION_IS_RELEASE is set to $(RELEASE)." >&2 ; \
|
||||
echo "Did you remember to update src/node_version.cc?" >&2 ; \
|
||||
echo "" >&2 ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
|
||||
pkg: $(PKG)
|
||||
|
||||
$(PKG):
|
||||
$(PKG): release-only
|
||||
rm -rf $(PKGDIR)
|
||||
rm -rf out/deps out/Release
|
||||
./configure --prefix=$(PKGDIR)/32/usr/local --without-snapshot --dest-cpu=ia32
|
||||
|
@ -224,27 +261,7 @@ $(PKG):
|
|||
--out $(PKG)
|
||||
SIGN="$(SIGN)" PKG="$(PKG)" bash tools/osx-productsign.sh
|
||||
|
||||
$(TARBALL): node doc
|
||||
@if [ "$(shell git status --porcelain | egrep -v '^\?\? ')" = "" ]; then \
|
||||
exit 0 ; \
|
||||
else \
|
||||
echo "" >&2 ; \
|
||||
echo "The git repository is not clean." >&2 ; \
|
||||
echo "Please commit changes before building release tarball." >&2 ; \
|
||||
echo "" >&2 ; \
|
||||
git status --porcelain | egrep -v '^\?\?' >&2 ; \
|
||||
echo "" >&2 ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@if [ $(shell ./node --version) = "$(VERSION)" ]; then \
|
||||
exit 0; \
|
||||
else \
|
||||
echo "" >&2 ; \
|
||||
echo "$(shell ./node --version) doesn't match $(VERSION)." >&2 ; \
|
||||
echo "Did you remember to update src/node_version.cc?" >&2 ; \
|
||||
echo "" >&2 ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
$(TARBALL): release-only node doc
|
||||
git archive --format=tar --prefix=$(TARNAME)/ HEAD | tar xf -
|
||||
mkdir -p $(TARNAME)/doc/api
|
||||
cp doc/node.1 $(TARNAME)/doc/node.1
|
||||
|
@ -256,6 +273,22 @@ $(TARBALL): node doc
|
|||
rm -rf $(TARNAME)
|
||||
gzip -f -9 $(TARNAME).tar
|
||||
|
||||
tar: $(TARBALL)
|
||||
|
||||
$(BINARYTAR): release-only
|
||||
rm -rf $(BINARYNAME)
|
||||
rm -rf out/deps out/Release
|
||||
./configure --prefix=/ --without-snapshot --dest-cpu=$(DESTCPU)
|
||||
$(MAKE) install DESTDIR=$(BINARYNAME) V=$(V) PORTABLE=1
|
||||
cp README.md $(BINARYNAME)
|
||||
cp LICENSE $(BINARYNAME)
|
||||
cp ChangeLog $(BINARYNAME)
|
||||
tar -cf $(BINARYNAME).tar $(BINARYNAME)
|
||||
rm -rf $(BINARYNAME)
|
||||
gzip -f -9 $(BINARYNAME).tar
|
||||
|
||||
binary: $(BINARYTAR)
|
||||
|
||||
dist-upload: $(TARBALL) $(PKG)
|
||||
ssh node@nodejs.org mkdir -p web/nodejs.org/dist/$(VERSION)
|
||||
scp $(TARBALL) node@nodejs.org:~/web/nodejs.org/dist/$(VERSION)/$(TARBALL)
|
||||
|
@ -280,4 +313,4 @@ cpplint:
|
|||
|
||||
lint: jslint cpplint
|
||||
|
||||
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean check uninstall install install-includes install-bin all staticlib dynamiclib test test-all website-upload pkg blog blogclean
|
||||
.PHONY: lint cpplint jslint bench clean docopen docclean doc dist distclean check uninstall install install-includes install-bin all staticlib dynamiclib test test-all website-upload pkg blog blogclean tar binary release-only
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
'library%': 'static_library', # allow override to 'shared_library' for DLL/.so builds
|
||||
'component%': 'static_library', # NB. these names match with what V8 expects
|
||||
'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way
|
||||
'gcc_version%': 'unknown',
|
||||
'clang%': 0,
|
||||
|
||||
# Turn on optimizations that may trigger compiler bugs.
|
||||
# Use at your own risk. Do *NOT* report bugs if this option is enabled.
|
||||
|
@ -53,7 +55,7 @@
|
|||
'cflags': [ '-O3', '-ffunction-sections', '-fdata-sections' ],
|
||||
'ldflags': [ '-Wl,--gc-sections' ],
|
||||
}, {
|
||||
'cflags': [ '-O2', '-fno-strict-aliasing', '-fno-tree-vrp' ],
|
||||
'cflags': [ '-O2', '-fno-strict-aliasing' ],
|
||||
'cflags!': [ '-O3', '-fstrict-aliasing' ],
|
||||
'conditions': [
|
||||
# Required by the dtrace post-processor. Unfortunately,
|
||||
|
@ -64,6 +66,9 @@
|
|||
}, {
|
||||
'cflags!': [ '-ffunction-sections', '-fdata-sections' ],
|
||||
}],
|
||||
['clang==1 or gcc_version >= 40', {
|
||||
'cflags': [ '-fno-tree-vrp' ],
|
||||
}],
|
||||
],
|
||||
}],
|
||||
['OS=="solaris"', {
|
||||
|
|
|
@ -333,8 +333,13 @@ def configure_node(o):
|
|||
o['variables']['v8_use_arm_eabi_hardfloat'] = b(hard_float)
|
||||
o['variables']['armv7'] = 1 if is_arch_armv7() else 0
|
||||
|
||||
# clang has always supported -fvisibility=hidden, right?
|
||||
cc_version, is_clang = compiler_version()
|
||||
o['variables']['clang'] = 1 if is_clang else 0
|
||||
|
||||
if not is_clang and cc_version != 0:
|
||||
o['variables']['gcc_version'] = 10 * cc_version[0] + cc_version[1]
|
||||
|
||||
# clang has always supported -fvisibility=hidden, right?
|
||||
if not is_clang and cc_version < (4,0,0):
|
||||
o['variables']['visibility'] = ''
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
language: node_js
|
||||
before_install: "make &>out || cat out; rm out"
|
||||
node_js:
|
||||
- 0.6
|
||||
- 0.8
|
||||
|
|
|
@ -72,3 +72,6 @@ James Halliday <mail@substack.net>
|
|||
Jeremy Cantrell <jmcantrell@gmail.com>
|
||||
Ribettes <patlogan29@gmail.com>
|
||||
Don Park <donpark@docuverse.com>
|
||||
Kei Son <heyacct@gmail.com>
|
||||
Nicolas Morel <marsup@gmail.com>
|
||||
Mark Dube <markisdee@gmail.com>
|
||||
|
|
|
@ -92,7 +92,7 @@ doc/cli/index.md: $(markdowns) scripts/index-build.js scripts/doc-build.sh packa
|
|||
node scripts/index-build.js > $@
|
||||
|
||||
node_modules/.bin/ronn:
|
||||
node cli.js install https://github.com/isaacs/ronnjs/tarball/master
|
||||
node cli.js install
|
||||
|
||||
doc: man
|
||||
|
||||
|
@ -127,7 +127,7 @@ doc-publish: doc
|
|||
node@npmjs.org:/home/node/npm-www/static/
|
||||
|
||||
zip-publish: release
|
||||
scp release/* izs.me:/var/www/izs.me/static/public/npm/
|
||||
scp release/* node@nodejs.org:dist/npm/
|
||||
|
||||
release:
|
||||
@bash scripts/release.sh
|
||||
|
|
|
@ -35,31 +35,18 @@ paths, etc.) then read on.
|
|||
|
||||
## Fancy Install (Unix)
|
||||
|
||||
To install npm with one command, do this:
|
||||
|
||||
curl http://npmjs.org/install.sh | sh
|
||||
|
||||
To skip the npm 0.x cleanup, do this:
|
||||
|
||||
curl http://npmjs.org/install.sh | clean=no sh
|
||||
|
||||
To say "yes" to the 0.x cleanup, but skip the prompt:
|
||||
|
||||
curl http://npmjs.org/install.sh | clean=yes sh
|
||||
|
||||
If you get permission errors, you'll need to **run** the script as root.
|
||||
(Note, just putting `sudo` in front of the `curl` will **fetch** the script
|
||||
as root.)
|
||||
There's a pretty robust install script at
|
||||
<https://npmjs.org/install.sh>. You can download that and run it.
|
||||
|
||||
### Slightly Fancier
|
||||
|
||||
You can set any npm configuration params with that script:
|
||||
|
||||
curl http://npmjs.org/install.sh | npm_config_prefix=/some/path sh
|
||||
npm_config_prefix=/some/path sh install.sh
|
||||
|
||||
Or, you can run it in uber-debuggery mode:
|
||||
|
||||
curl http://npmjs.org/install.sh | npm_debug=1 sh
|
||||
npm_debug=1 sh install.sh
|
||||
|
||||
### Even Fancier
|
||||
|
||||
|
@ -83,21 +70,6 @@ git, and mess with it directly.
|
|||
|
||||
No.
|
||||
|
||||
## Dev Install
|
||||
|
||||
To install the latest **unstable** development version from git:
|
||||
|
||||
git clone https://github.com/isaacs/npm.git
|
||||
cd npm
|
||||
sudo make install # (or: `node cli.js install -gf`)
|
||||
|
||||
If you're sitting in the code folder reading this document in your
|
||||
terminal, then you've already got the code. Just do:
|
||||
|
||||
sudo make install
|
||||
|
||||
and npm will install itself.
|
||||
|
||||
## Permissions when Using npm to Install Other Stuff
|
||||
|
||||
**tl;dr**
|
||||
|
@ -163,6 +135,14 @@ you have chosen.
|
|||
If you would like to use npm programmatically, you can do that.
|
||||
It's not very well documented, but it *is* rather simple.
|
||||
|
||||
Most of the time, unless you actually want to do all the things that
|
||||
npm does, you should try using one of npm's dependencies rather than
|
||||
using npm itself, if possible.
|
||||
|
||||
Eventually, npm will be just a thin cli wrapper around the modules
|
||||
that it depends on, but for now, there are some things that you must
|
||||
use npm itself to do.
|
||||
|
||||
var npm = require("npm")
|
||||
npm.load(myConfigObject, function (er) {
|
||||
if (er) return handlError(er)
|
||||
|
@ -195,8 +175,7 @@ especially the [faq](http://npmjs.org/doc/faq.html).
|
|||
You can use the `npm help` command to read any of them.
|
||||
|
||||
If you're a developer, and you want to use npm to publish your program,
|
||||
you should
|
||||
[read this](http://npmjs.org/doc/developers.html)
|
||||
you should [read this](http://npmjs.org/doc/developers.html)
|
||||
|
||||
## Legal Stuff
|
||||
|
||||
|
|
|
@ -22,10 +22,10 @@ log.info("it worked if it ends with", "ok")
|
|||
var fs = require("graceful-fs")
|
||||
, path = require("path")
|
||||
, npm = require("../lib/npm.js")
|
||||
, ini = require("../lib/utils/ini.js")
|
||||
, npmconf = require("npmconf")
|
||||
, errorHandler = require("../lib/utils/error-handler.js")
|
||||
|
||||
, configDefs = require("../lib/utils/config-defs.js")
|
||||
, configDefs = npmconf.defs
|
||||
, shorthands = configDefs.shorthands
|
||||
, types = configDefs.types
|
||||
, nopt = require("nopt")
|
||||
|
@ -50,10 +50,9 @@ if (conf.version) {
|
|||
}
|
||||
|
||||
if (conf.versions) {
|
||||
var v = process.versions
|
||||
v.npm = npm.version
|
||||
console.log(v)
|
||||
return
|
||||
npm.command = "version"
|
||||
conf.usage = false
|
||||
npm.argv = []
|
||||
}
|
||||
|
||||
log.info("using", "npm@%s", npm.version)
|
||||
|
|
|
@ -23,6 +23,11 @@ npm will default some values based on package contents.
|
|||
If there is a `wscript` file in the root of your package, npm will
|
||||
default the `preinstall` command to compile using node-waf.
|
||||
|
||||
* `"scripts":{"preinstall": "node-gyp rebuild"}`
|
||||
|
||||
If there is a `binding.gyp` file in the root of your package, npm will
|
||||
default the `preinstall` command to compile using node-gyp.
|
||||
|
||||
* `"contributors": [...]`
|
||||
|
||||
If there is an `AUTHORS` file in the root of your package, npm will
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
<p>This function should not be used programmatically. Instead, just refer
|
||||
to the <code>npm.bin</code> member.</p>
|
||||
</div>
|
||||
<p id="footer">bin — npm@1.1.46</p>
|
||||
<p id="footer">bin — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This command tries to guess at the likely location of a package's
|
||||
<p>This command tries to guess at the likely location of a package's
|
||||
bug tracker URL, and then tries to open it using the <code>--browser</code>
|
||||
config param.</p>
|
||||
|
||||
|
@ -25,7 +25,7 @@ optional version number.</p>
|
|||
<p>This command will launch a browser, so this command may not be the most
|
||||
friendly for programmatic use.</p>
|
||||
</div>
|
||||
<p id="footer">bugs — npm@1.1.46</p>
|
||||
<p id="footer">bugs — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -28,7 +28,7 @@ usage, or <code>man 3 npm-<command></code> for programmatic usage.</p>
|
|||
|
||||
<ul><li><a href="../doc/index.html">index(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">commands — npm@1.1.46</p>
|
||||
<p id="footer">commands — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -22,7 +22,7 @@ element in the array tells config what to do. Possible values are:</p>
|
|||
<ul><li><p><code>set</code></p><p>Sets a config parameter. The second element in <code>args</code> is interpreted as the
|
||||
key, and the third element is interpreted as the value.</p></li><li><p><code>get</code></p><p>Gets the value of a config parameter. The second element in <code>args</code> is the
|
||||
key to get the value of.</p></li><li><p><code>delete</code> (<code>rm</code> or <code>del</code>)</p><p>Deletes a parameter from the config. The second element in <code>args</code> is the
|
||||
key to delete.</p></li><li><p><code>list</code> (<code>ls</code>)</p><p>Show all configs that aren't secret. No parameters necessary.</p></li><li><p><code>edit</code>:</p><p>Opens the config file in the default editor. This command isn't very useful
|
||||
key to delete.</p></li><li><p><code>list</code> (<code>ls</code>)</p><p>Show all configs that aren't secret. No parameters necessary.</p></li><li><p><code>edit</code>:</p><p>Opens the config file in the default editor. This command isn't very useful
|
||||
programmatically, but it is made available.</p></li></ul>
|
||||
|
||||
<p>To programmatically access npm configuration settings, or set them for
|
||||
|
@ -33,7 +33,7 @@ functions instead.</p>
|
|||
|
||||
<ul><li><a href="../api/npm.html">npm(3)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">config — npm@1.1.46</p>
|
||||
<p id="footer">config — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
<p>This command will update the npm registry entry for a package, providing
|
||||
a deprecation warning to all who attempt to install it.</p>
|
||||
|
||||
<p>The 'args' parameter must have exactly two elements:</p>
|
||||
<p>The 'args' parameter must have exactly two elements:</p>
|
||||
|
||||
<ul><li><p><code>package[@version]</code></p><p>The <code>version</code> portion is optional, and may be either a range, or a
|
||||
specific version, or a tag.</p></li><li><p><code>message</code></p><p>The warning message that will be printed whenever a user attempts to
|
||||
|
@ -30,7 +30,7 @@ install the package.</p></li></ul>
|
|||
|
||||
<ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../api/unpublish.html">unpublish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">deprecate — npm@1.1.46</p>
|
||||
<p id="footer">deprecate — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This command tries to guess at the likely location of a package's
|
||||
<p>This command tries to guess at the likely location of a package's
|
||||
documentation URL, and then tries to open it using the <code>--browser</code>
|
||||
config param.</p>
|
||||
|
||||
|
@ -25,7 +25,7 @@ optional version number.</p>
|
|||
<p>This command will launch a browser, so this command may not be the most
|
||||
friendly for programmatic use.</p>
|
||||
</div>
|
||||
<p id="footer">docs — npm@1.1.46</p>
|
||||
<p id="footer">docs — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,14 +14,14 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>Opens the package folder in the default editor (or whatever you've
|
||||
<p>Opens the package folder in the default editor (or whatever you've
|
||||
configured as the npm <code>editor</code> config -- see <code>npm help config</code>.)</p>
|
||||
|
||||
<p>After it has been edited, the package is rebuilt so as to pick up any
|
||||
changes in compiled packages.</p>
|
||||
|
||||
<p>For instance, you can do <code>npm install connect</code> to install connect
|
||||
into your package, and then <code>npm.commands.edit(["connect"], callback)</code>
|
||||
into your package, and then <code>npm.commands.edit(["connect"], callback)</code>
|
||||
to make a few changes to your locally installed copy.</p>
|
||||
|
||||
<p>The first parameter is a string array with a single element, the package
|
||||
|
@ -30,7 +30,7 @@ to open. The package can optionally have a version number attached.</p>
|
|||
<p>Since this command opens an editor in a new process, be careful about where
|
||||
and how this is used.</p>
|
||||
</div>
|
||||
<p id="footer">edit — npm@1.1.46</p>
|
||||
<p id="footer">edit — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -22,9 +22,9 @@ immediately terminates.</p>
|
|||
<p>Note that the package is <em>not</em> automatically rebuilt afterwards, so be
|
||||
sure to use <code>npm rebuild <pkg></code> if you make any changes.</p>
|
||||
|
||||
<p>The first element in the 'args' parameter must be a package name. After that is the optional command, which can be any number of strings. All of the strings will be combined into one, space-delimited command.</p>
|
||||
<p>The first element in the 'args' parameter must be a package name. After that is the optional command, which can be any number of strings. All of the strings will be combined into one, space-delimited command.</p>
|
||||
</div>
|
||||
<p id="footer">explore — npm@1.1.46</p>
|
||||
<p id="footer">explore — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -24,7 +24,7 @@ are multiple results, the results are printed to the screen formatted and the
|
|||
array of results is returned. Each result is an object with these properties:</p>
|
||||
|
||||
<ul><li>hits:
|
||||
A map of args to number of hits on that arg. For example, {"npm": 3}</li><li>found:
|
||||
A map of args to number of hits on that arg. For example, {"npm": 3}</li><li>found:
|
||||
Total number of unique args that matched.</li><li>totalHits:
|
||||
Total number of hits.</li><li>lines:
|
||||
An array of all matching lines (and some adjacent lines).</li><li>file:
|
||||
|
@ -32,7 +32,7 @@ Name of the file that matched</li></ul>
|
|||
|
||||
<p>The silent parameter is not neccessary not used, but it may in the future.</p>
|
||||
</div>
|
||||
<p id="footer">help-search — npm@1.1.46</p>
|
||||
<p id="footer">help-search — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -17,25 +17,25 @@
|
|||
<p>This will ask you a bunch of questions, and then write a package.json for you.</p>
|
||||
|
||||
<p>It attempts to make reasonable guesses about what you want things to be set to,
|
||||
and then writes a package.json file with the options you've selected.</p>
|
||||
and then writes a package.json file with the options you've selected.</p>
|
||||
|
||||
<p>If you already have a package.json file, it'll read that first, and default to
|
||||
<p>If you already have a package.json file, it'll read that first, and default to
|
||||
the options in there.</p>
|
||||
|
||||
<p>It is strictly additive, so it does not delete options from your package.json
|
||||
without a really good reason to do so.</p>
|
||||
|
||||
<p>Since this function expects to be run on the command-line, it doesn't work very
|
||||
<p>Since this function expects to be run on the command-line, it doesn't work very
|
||||
well as a programmatically. The best option is to roll your own, and since
|
||||
JavaScript makes it stupid simple to output formatted JSON, that is the
|
||||
preferred method. If you're sure you want to handle command-line prompting,
|
||||
preferred method. If you're sure you want to handle command-line prompting,
|
||||
then go ahead and use this programmatically.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<p><a href="../doc/json.html">json(1)</a></p>
|
||||
</div>
|
||||
<p id="footer">init — npm@1.1.46</p>
|
||||
<p id="footer">init — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -16,16 +16,16 @@
|
|||
|
||||
<p>This acts much the same ways as installing on the command-line.</p>
|
||||
|
||||
<p>The 'where' parameter is optional and only used internally, and it specifies
|
||||
<p>The 'where' parameter is optional and only used internally, and it specifies
|
||||
where the packages should be installed to.</p>
|
||||
|
||||
<p>The 'packages' parameter is an array of strings. Each element in the array is
|
||||
<p>The 'packages' parameter is an array of strings. Each element in the array is
|
||||
the name of a package to be installed.</p>
|
||||
|
||||
<p>Finally, 'callback' is a function that will be called when all packages have been
|
||||
<p>Finally, 'callback' is a function that will be called when all packages have been
|
||||
installed or when an error has been encountered.</p>
|
||||
</div>
|
||||
<p id="footer">install — npm@1.1.46</p>
|
||||
<p id="footer">install — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -24,7 +24,7 @@ symbolic link from <code>prefix/package-name</code> to the current folder.</p>
|
|||
folder to the global symlink.</p>
|
||||
|
||||
<p>When creating tarballs for <code>npm publish</code>, the linked packages are
|
||||
"snapshotted" to their current state by resolving the symbolic links.</p>
|
||||
"snapshotted" to their current state by resolving the symbolic links.</p>
|
||||
|
||||
<p>This is
|
||||
handy for installing your own stuff, so that you can work on it and test it
|
||||
|
@ -34,12 +34,12 @@ iteratively without having to continually rebuild.</p>
|
|||
|
||||
<pre><code>npm.commands.link(cb) # creates global link from the cwd
|
||||
# (say redis package)
|
||||
npm.commands.link('redis', cb) # link-install the package</code></pre>
|
||||
npm.commands.link('redis', cb) # link-install the package</code></pre>
|
||||
|
||||
<p>Now, any changes to the redis package will be reflected in
|
||||
the package in the current working directory</p>
|
||||
</div>
|
||||
<p id="footer">link — npm@1.1.46</p>
|
||||
<p id="footer">link — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -27,12 +27,12 @@ config object.</p>
|
|||
<p>For example, to emulate the --dev flag, pass an object that looks like this:</p>
|
||||
|
||||
<pre><code>{
|
||||
"dev": true
|
||||
"dev": true
|
||||
}</code></pre>
|
||||
|
||||
<p>For a list of all the available command-line configs, see <code>npm help config</code></p>
|
||||
</div>
|
||||
<p id="footer">load — npm@1.1.46</p>
|
||||
<p id="footer">load — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -30,7 +30,7 @@ but the data will still be returned.</p>
|
|||
|
||||
<p>Callback is provided an error if one occurred, the full data about which
|
||||
packages are installed and which dependencies they will receive, and a
|
||||
"lite" data object which just shows which versions are installed where.
|
||||
"lite" data object which just shows which versions are installed where.
|
||||
Note that the full data object is a circular structure, so care must be
|
||||
taken if it is serialized to JSON.</p>
|
||||
|
||||
|
@ -55,11 +55,11 @@ taken if it is serialized to JSON.</p>
|
|||
<p>List packages in the global install prefix instead of in the current
|
||||
project.</p>
|
||||
|
||||
<p>Note, if parseable is set or long isn't set, then duplicates will be trimmed.
|
||||
<p>Note, if parseable is set or long isn't set, then duplicates will be trimmed.
|
||||
This means that if a submodule a same dependency as a parent module, then the
|
||||
dependency will only be output once.</p>
|
||||
</div>
|
||||
<p id="footer">ls — npm@1.1.46</p>
|
||||
<p id="footer">ls — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -10,21 +10,21 @@
|
|||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<pre><code>var npm = require("npm")
|
||||
<pre><code>var npm = require("npm")
|
||||
npm.load(configObject, function (er, npm) {
|
||||
// use the npm object, now that it's loaded.
|
||||
// use the npm object, now that it's loaded.
|
||||
|
||||
npm.config.set(key, val)
|
||||
val = npm.config.get(key)
|
||||
|
||||
console.log("prefix = %s", npm.prefix)
|
||||
console.log("prefix = %s", npm.prefix)
|
||||
|
||||
npm.commands.install(["package"], cb)
|
||||
npm.commands.install(["package"], cb)
|
||||
})</code></pre>
|
||||
|
||||
<h2 id="VERSION">VERSION</h2>
|
||||
|
||||
<p>1.1.46</p>
|
||||
<p>1.1.49</p>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
|
@ -32,7 +32,7 @@ npm.load(configObject, function (er, npm) {
|
|||
To find documentation of the command line
|
||||
client, see <code><a href="../doc/npm.html">npm(1)</a></code>.</p>
|
||||
|
||||
<p>Prior to using npm's commands,
|
||||
<p>Prior to using npm's commands,
|
||||
<code>npm.load()</code> must be called with an object hash of
|
||||
top-level configs. In the npm command line client,
|
||||
this set of configs is parsed from the command line options. Additional
|
||||
|
@ -57,9 +57,9 @@ command.</p>
|
|||
|
||||
<ul><li><p><code>npm.load(configs, cb)</code></p><p>Load the configuration params, and call the <code>cb</code> function once the
|
||||
globalconfig and userconfig files have been loaded as well, or on
|
||||
nextTick if they've already been loaded.</p></li><li><p><code>npm.config</code></p><p>An object for accessing npm configuration parameters.</p><ul><li><p><code>npm.config.get(key)</code></p></li><li><code>npm.config.set(key, val)</code></li><li><p><code>npm.config.del(key)</code></p></li></ul></li><li><p><code>npm.dir</code> or <code>npm.root</code></p><p>The <code>node_modules</code> directory where npm will operate.</p></li><li><p><code>npm.prefix</code></p><p>The prefix where npm is operating. (Most often the current working
|
||||
nextTick if they've already been loaded.</p></li><li><p><code>npm.config</code></p><p>An object for accessing npm configuration parameters.</p><ul><li><p><code>npm.config.get(key)</code></p></li><li><code>npm.config.set(key, val)</code></li><li><p><code>npm.config.del(key)</code></p></li></ul></li><li><p><code>npm.dir</code> or <code>npm.root</code></p><p>The <code>node_modules</code> directory where npm will operate.</p></li><li><p><code>npm.prefix</code></p><p>The prefix where npm is operating. (Most often the current working
|
||||
directory.)</p></li><li><p><code>npm.cache</code></p><p>The place where npm keeps JSON and tarballs it fetches from the
|
||||
registry (or uploads to the registry).</p></li><li><p><code>npm.tmp</code></p><p>npm's temporary working directory.</p></li><li><p><code>npm.deref</code></p><p>Get the "real" name for a command that has either an alias or
|
||||
registry (or uploads to the registry).</p></li><li><p><code>npm.tmp</code></p><p>npm's temporary working directory.</p></li><li><p><code>npm.deref</code></p><p>Get the "real" name for a command that has either an alias or
|
||||
abbreviation.</p></li></ul>
|
||||
|
||||
<h2 id="MAGIC">MAGIC</h2>
|
||||
|
@ -74,11 +74,11 @@ the error or results.</p>
|
|||
|
||||
<p>For example, this would work in a node repl:</p>
|
||||
|
||||
<pre><code>> npm = require("npm")
|
||||
<pre><code>> npm = require("npm")
|
||||
> npm.load() // wait a sec...
|
||||
> npm.install("dnode", "express")</code></pre>
|
||||
> npm.install("dnode", "express")</code></pre>
|
||||
|
||||
<p>Note that that <em>won't</em> work in a node program, since the <code>install</code>
|
||||
<p>Note that that <em>won't</em> work in a node program, since the <code>install</code>
|
||||
method will get called before the configuration load is completed.</p>
|
||||
|
||||
<h2 id="ABBREVS">ABBREVS</h2>
|
||||
|
@ -89,9 +89,9 @@ method names. Use the <code>npm.deref</code> method to find the real name.</p>
|
|||
|
||||
<p>For example:</p>
|
||||
|
||||
<pre><code>var cmd = npm.deref("unp") // cmd === "unpublish"</code></pre>
|
||||
<pre><code>var cmd = npm.deref("unp") // cmd === "unpublish"</code></pre>
|
||||
</div>
|
||||
<p id="footer">npm — npm@1.1.46</p>
|
||||
<p id="footer">npm — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -17,9 +17,9 @@
|
|||
<p>This command will check the registry to see if the specified packages are
|
||||
currently outdated.</p>
|
||||
|
||||
<p>If the 'packages' parameter is left out, npm will check all packages.</p>
|
||||
<p>If the 'packages' parameter is left out, npm will check all packages.</p>
|
||||
</div>
|
||||
<p id="footer">outdated — npm@1.1.46</p>
|
||||
<p id="footer">outdated — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>The first element of the 'args' parameter defines what to do, and the subsequent
|
||||
<p>The first element of the 'args' parameter defines what to do, and the subsequent
|
||||
elements depend on the action. Possible values for the action are (order of
|
||||
parameters are given in parenthesis):</p>
|
||||
|
||||
|
@ -27,14 +27,14 @@ Remove a user from the package owner list. This immediately revokes their
|
|||
privileges.</li></ul>
|
||||
|
||||
<p>Note that there is only one level of access. Either you can modify a package,
|
||||
or you can't. Future versions may contain more fine-grained access levels, but
|
||||
or you can't. Future versions may contain more fine-grained access levels, but
|
||||
that is not implemented at this time.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../api/publish.html">publish(3)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">owner — npm@1.1.46</p>
|
||||
<p id="footer">owner — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>For anything that's installable (that is, a package folder, tarball,
|
||||
<p>For anything that's installable (that is, a package folder, tarball,
|
||||
tarball url, name@tag, name@version, or name), this command will fetch
|
||||
it to the cache, and then copy the tarball to the current working
|
||||
directory as <code><name>-<version>.tgz</code>, and then write the filenames out to
|
||||
|
@ -25,7 +25,7 @@ overwritten the second time.</p>
|
|||
|
||||
<p>If no arguments are supplied, then npm packs the current package folder.</p>
|
||||
</div>
|
||||
<p id="footer">pack — npm@1.1.46</p>
|
||||
<p id="footer">pack — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -16,12 +16,12 @@
|
|||
|
||||
<p>Print the prefix to standard out.</p>
|
||||
|
||||
<p>'args' is never used and callback is never called with data.
|
||||
'args' must be present or things will break.</p>
|
||||
<p>'args' is never used and callback is never called with data.
|
||||
'args' must be present or things will break.</p>
|
||||
|
||||
<p>This function is not useful programmatically</p>
|
||||
</div>
|
||||
<p id="footer">prefix — npm@1.1.46</p>
|
||||
<p id="footer">prefix — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,16 +14,16 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This command removes "extraneous" packages.</p>
|
||||
<p>This command removes "extraneous" packages.</p>
|
||||
|
||||
<p>The first parameter is optional, and it specifies packages to be removed.</p>
|
||||
|
||||
<p>No packages are specified, then all packages will be checked.</p>
|
||||
|
||||
<p>Extraneous packages are packages that are not listed on the parent
|
||||
package's dependencies list.</p>
|
||||
package's dependencies list.</p>
|
||||
</div>
|
||||
<p id="footer">prune — npm@1.1.46</p>
|
||||
<p id="footer">prune — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>Publishes a package to the registry so that it can be installed by name.
|
||||
Possible values in the 'packages' array are:</p>
|
||||
Possible values in the 'packages' array are:</p>
|
||||
|
||||
<ul><li><p><code><folder></code>:
|
||||
A folder containing a package.json file</p></li><li><p><code><tarball></code>:
|
||||
|
@ -26,13 +26,13 @@ with a package.json file inside.</p></li></ul>
|
|||
current working directory.</p>
|
||||
|
||||
<p>This command could fails if one of the packages specified already exists in
|
||||
the registry. Overwrites when the "force" environment variable is set.</p>
|
||||
the registry. Overwrites when the "force" environment variable is set.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../api/owner.html">owner(3)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">publish — npm@1.1.46</p>
|
||||
<p id="footer">publish — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -16,13 +16,13 @@
|
|||
|
||||
<p>This command runs the <code>npm build</code> command on each of the matched packages. This is useful
|
||||
when you install a new version of node, and must recompile all your C++ addons with
|
||||
the new binary. If no 'packages' parameter is specify, every package will be rebuilt.</p>
|
||||
the new binary. If no 'packages' parameter is specify, every package will be rebuilt.</p>
|
||||
|
||||
<h2 id="CONFIGURATION">CONFIGURATION</h2>
|
||||
|
||||
<p>See <code>npm help build</code></p>
|
||||
</div>
|
||||
<p id="footer">rebuild — npm@1.1.46</p>
|
||||
<p id="footer">rebuild — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,11 +14,11 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This runs a package's "restart" script, if one was provided.
|
||||
Otherwise it runs package's "stop" script, if one was provided, and then
|
||||
the "start" script.</p>
|
||||
<p>This runs a package's "restart" script, if one was provided.
|
||||
Otherwise it runs package's "stop" script, if one was provided, and then
|
||||
the "start" script.</p>
|
||||
|
||||
<p>If no version is specified, then it restarts the "active" version.</p>
|
||||
<p>If no version is specified, then it restarts the "active" version.</p>
|
||||
|
||||
<p>npm can run tests on multiple packages. Just specify multiple packages
|
||||
in the <code>packages</code> parameter.</p>
|
||||
|
@ -27,7 +27,7 @@ in the <code>packages</code> parameter.</p>
|
|||
|
||||
<ul><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">restart — npm@1.1.46</p>
|
||||
<p id="footer">restart — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -16,12 +16,12 @@
|
|||
|
||||
<p>Print the effective <code>node_modules</code> folder to standard out.</p>
|
||||
|
||||
<p>'args' is never used and callback is never called with data.
|
||||
'args' must be present or things will break.</p>
|
||||
<p>'args' is never used and callback is never called with data.
|
||||
'args' must be present or things will break.</p>
|
||||
|
||||
<p>This function is not useful programmatically.</p>
|
||||
</div>
|
||||
<p id="footer">root — npm@1.1.46</p>
|
||||
<p id="footer">root — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,12 +14,12 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This runs an arbitrary command from a package's "scripts" object.</p>
|
||||
<p>This runs an arbitrary command from a package's "scripts" object.</p>
|
||||
|
||||
<p>It is used by the test, start, restart, and stop commands, but can be
|
||||
called directly, as well.</p>
|
||||
|
||||
<p>The 'args' parameter is an array of strings. Behavior depends on the number
|
||||
<p>The 'args' parameter is an array of strings. Behavior depends on the number
|
||||
of elements. If there is only one element, npm assumes that the element
|
||||
represents a command to be run on the local repository. If there is more than
|
||||
one element, then the first is assumed to be the package and the second is
|
||||
|
@ -29,7 +29,7 @@ assumed to be the command to run. All other elements are ignored.</p>
|
|||
|
||||
<ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../api/test.html">test(3)</a></li><li><a href="../api/start.html">start(3)</a></li><li><a href="../api/restart.html">restart(3)</a></li><li><a href="../api/stop.html">stop(3)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">run-script — npm@1.1.46</p>
|
||||
<p id="footer">run-script — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -19,20 +19,20 @@
|
|||
<ul><li>searchTerms:
|
||||
Array of search terms. These terms are case-insensitive.</li><li>silent:
|
||||
If true, npm will not log anything to the console.</li><li>staleness:
|
||||
This is the threshold for stale packages. "Fresh" packages are not refreshed
|
||||
This is the threshold for stale packages. "Fresh" packages are not refreshed
|
||||
from the registry. This value is measured in seconds.</li><li><p>callback:
|
||||
Returns an object where each key is the name of a package, and the value
|
||||
is information about that package along with a 'words' property, which is
|
||||
is information about that package along with a 'words' property, which is
|
||||
a space-delimited string of all of the interesting words in that package.
|
||||
The only properties included are those that are searched, which generally include:</p><ul><li>name</li><li>description</li><li>maintainers</li><li>url</li><li>keywords</li></ul></li></ul>
|
||||
|
||||
<p>A search on the registry excludes any result that does not match all of the
|
||||
search terms. It also removes any items from the results that contain an
|
||||
excluded term (the "searchexclude" config). The search is case insensitive
|
||||
and doesn't try to read your mind (it doesn't do any verb tense matching or the
|
||||
excluded term (the "searchexclude" config). The search is case insensitive
|
||||
and doesn't try to read your mind (it doesn't do any verb tense matching or the
|
||||
like).</p>
|
||||
</div>
|
||||
<p id="footer">search — npm@1.1.46</p>
|
||||
<p id="footer">search — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -16,17 +16,17 @@
|
|||
|
||||
<p>This acts much the same ways as shrinkwrapping on the command-line.</p>
|
||||
|
||||
<p>This command does not take any arguments, but 'args' must be defined.
|
||||
<p>This command does not take any arguments, but 'args' must be defined.
|
||||
Beyond that, if any arguments are passed in, npm will politely warn that it
|
||||
does not take positional arguments.</p>
|
||||
|
||||
<p>If the 'silent' parameter is set to true, nothing will be output to the screen,
|
||||
<p>If the 'silent' parameter is set to true, nothing will be output to the screen,
|
||||
but the shrinkwrap file will still be written.</p>
|
||||
|
||||
<p>Finally, 'callback' is a function that will be called when the shrinkwrap has
|
||||
<p>Finally, 'callback' is a function that will be called when the shrinkwrap has
|
||||
been saved.</p>
|
||||
</div>
|
||||
<p id="footer">shrinkwrap — npm@1.1.46</p>
|
||||
<p id="footer">shrinkwrap — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,12 +14,12 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This runs a package's "start" script, if one was provided.</p>
|
||||
<p>This runs a package's "start" script, if one was provided.</p>
|
||||
|
||||
<p>npm can run tests on multiple packages. Just specify multiple packages
|
||||
in the <code>packages</code> parameter.</p>
|
||||
</div>
|
||||
<p id="footer">start — npm@1.1.46</p>
|
||||
<p id="footer">start — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,12 +14,12 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This runs a package's "stop" script, if one was provided.</p>
|
||||
<p>This runs a package's "stop" script, if one was provided.</p>
|
||||
|
||||
<p>npm can run stop on multiple packages. Just specify multiple packages
|
||||
in the <code>packages</code> parameter.</p>
|
||||
</div>
|
||||
<p id="footer">stop — npm@1.1.46</p>
|
||||
<p id="footer">stop — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
in its package.json description then add it as a git submodule at
|
||||
<code>node_modules/<pkg name></code>.</p>
|
||||
|
||||
<p>This is a convenience only. From then on, it's up to you to manage
|
||||
<p>This is a convenience only. From then on, it's up to you to manage
|
||||
updates by using the appropriate git commands. npm will stubbornly
|
||||
refuse to update, modify, or remove anything with a <code>.git</code> subfolder
|
||||
in it.</p>
|
||||
|
@ -33,7 +33,7 @@ dependencies into the submodule folder.</p>
|
|||
|
||||
<ul><li>npm help json</li><li>git help submodule</li></ul>
|
||||
</div>
|
||||
<p id="footer">submodule — npm@1.1.46</p>
|
||||
<p id="footer">submodule — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
<p>Tags the specified version of the package with the specified tag, or the
|
||||
<code>--tag</code> config if not specified.</p>
|
||||
|
||||
<p>The 'package@version' is an array of strings, but only the first two elements are
|
||||
<p>The 'package@version' is an array of strings, but only the first two elements are
|
||||
currently used.</p>
|
||||
|
||||
<p>The first element must be in the form package@version, where package
|
||||
|
@ -29,7 +29,7 @@ parameter is missing or falsey (empty), the default froom the config will be
|
|||
used. For more information about how to set this config, check
|
||||
<code>man 3 npm-config</code> for programmatic usage or <code>man npm-config</code> for cli usage.</p>
|
||||
</div>
|
||||
<p id="footer">tag — npm@1.1.46</p>
|
||||
<p id="footer">tag — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This runs a package's "test" script, if one was provided.</p>
|
||||
<p>This runs a package's "test" script, if one was provided.</p>
|
||||
|
||||
<p>To run tests as a condition of installation, set the <code>npat</code> config to
|
||||
true.</p>
|
||||
|
@ -22,7 +22,7 @@ true.</p>
|
|||
<p>npm can run tests on multiple packages. Just specify multiple packages
|
||||
in the <code>packages</code> parameter.</p>
|
||||
</div>
|
||||
<p id="footer">test — npm@1.1.46</p>
|
||||
<p id="footer">test — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -16,13 +16,13 @@
|
|||
|
||||
<p>This acts much the same ways as uninstalling on the command-line.</p>
|
||||
|
||||
<p>The 'packages' parameter is an array of strings. Each element in the array is
|
||||
<p>The 'packages' parameter is an array of strings. Each element in the array is
|
||||
the name of a package to be uninstalled.</p>
|
||||
|
||||
<p>Finally, 'callback' is a function that will be called when all packages have been
|
||||
<p>Finally, 'callback' is a function that will be called when all packages have been
|
||||
uninstalled or when an error has been encountered.</p>
|
||||
</div>
|
||||
<p id="footer">uninstall — npm@1.1.46</p>
|
||||
<p id="footer">uninstall — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -26,7 +26,7 @@ is what is meant.</p>
|
|||
<p>If no version is specified, or if all versions are removed then
|
||||
the root package entry is removed from the registry entirely.</p>
|
||||
</div>
|
||||
<p id="footer">unpublish — npm@1.1.46</p>
|
||||
<p id="footer">unpublish — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -16,9 +16,9 @@
|
|||
|
||||
<p>Updates a package, upgrading it to the latest version. It also installs any missing packages.</p>
|
||||
|
||||
<p>The 'packages' argument is an array of packages to update. The 'callback' parameter will be called when done or when an error occurs.</p>
|
||||
<p>The 'packages' argument is an array of packages to update. The 'callback' parameter will be called when done or when an error occurs.</p>
|
||||
</div>
|
||||
<p id="footer">update — npm@1.1.46</p>
|
||||
<p id="footer">update — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -24,7 +24,7 @@ fail if the repo is not clean.</p>
|
|||
parameter. The difference, however, is this function will fail if it does
|
||||
not have exactly one element. The only element should be a version number.</p>
|
||||
</div>
|
||||
<p id="footer">version — npm@1.1.46</p>
|
||||
<p id="footer">version — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -17,10 +17,10 @@
|
|||
<p>This command shows data about a package and prints it to the stream
|
||||
referenced by the <code>outfd</code> config, which defaults to stdout.</p>
|
||||
|
||||
<p>The "args" parameter is an ordered list that closely resembles the command-line
|
||||
<p>The "args" parameter is an ordered list that closely resembles the command-line
|
||||
usage. The elements should be ordered such that the first element is
|
||||
the package and version (package@version). The version is optional. After that,
|
||||
the rest of the parameters are fields with optional subfields ("field.subfield")
|
||||
the rest of the parameters are fields with optional subfields ("field.subfield")
|
||||
which can be used to get only the information desired from the registry.</p>
|
||||
|
||||
<p>The callback will be passed all of the data returned by the query.</p>
|
||||
|
@ -28,51 +28,51 @@ which can be used to get only the information desired from the registry.</p>
|
|||
<p>For example, to get the package registry entry for the <code>connect</code> package,
|
||||
you can do this:</p>
|
||||
|
||||
<pre><code>npm.commands.view(["connect"], callback)</code></pre>
|
||||
<pre><code>npm.commands.view(["connect"], callback)</code></pre>
|
||||
|
||||
<p>If no version is specified, "latest" is assumed.</p>
|
||||
<p>If no version is specified, "latest" is assumed.</p>
|
||||
|
||||
<p>Field names can be specified after the package descriptor.
|
||||
For example, to show the dependencies of the <code>ronn</code> package at version
|
||||
0.3.5, you could do the following:</p>
|
||||
|
||||
<pre><code>npm.commands.view(["ronn@0.3.5", "dependencies"], callback)</code></pre>
|
||||
<pre><code>npm.commands.view(["ronn@0.3.5", "dependencies"], callback)</code></pre>
|
||||
|
||||
<p>You can view child field by separating them with a period.
|
||||
To view the git repository URL for the latest version of npm, you could
|
||||
do this:</p>
|
||||
|
||||
<pre><code>npm.commands.view(["npm", "repository.url"], callback)</code></pre>
|
||||
<pre><code>npm.commands.view(["npm", "repository.url"], callback)</code></pre>
|
||||
|
||||
<p>For fields that are arrays, requesting a non-numeric field will return
|
||||
all of the values from the objects in the list. For example, to get all
|
||||
the contributor names for the "express" project, you can do this:</p>
|
||||
the contributor names for the "express" project, you can do this:</p>
|
||||
|
||||
<pre><code>npm.commands.view(["express", "contributors.email"], callback)</code></pre>
|
||||
<pre><code>npm.commands.view(["express", "contributors.email"], callback)</code></pre>
|
||||
|
||||
<p>You may also use numeric indices in square braces to specifically select
|
||||
an item in an array field. To just get the email address of the first
|
||||
contributor in the list, you can do this:</p>
|
||||
|
||||
<pre><code>npm.commands.view(["express", "contributors[0].email"], callback)</code></pre>
|
||||
<pre><code>npm.commands.view(["express", "contributors[0].email"], callback)</code></pre>
|
||||
|
||||
<p>Multiple fields may be specified, and will be printed one after another.
|
||||
For exampls, to get all the contributor names and email addresses, you
|
||||
can do this:</p>
|
||||
|
||||
<pre><code>npm.commands.view(["express", "contributors.name", "contributors.email"], callback)</code></pre>
|
||||
<pre><code>npm.commands.view(["express", "contributors.name", "contributors.email"], callback)</code></pre>
|
||||
|
||||
<p>"Person" fields are shown as a string if they would be shown as an
|
||||
<p>"Person" fields are shown as a string if they would be shown as an
|
||||
object. So, for example, this will show the list of npm contributors in
|
||||
the shortened string format. (See <code>npm help json</code> for more on this.)</p>
|
||||
|
||||
<pre><code>npm.commands.view(["npm", "contributors"], callback)</code></pre>
|
||||
<pre><code>npm.commands.view(["npm", "contributors"], callback)</code></pre>
|
||||
|
||||
<p>If a version range is provided, then data will be printed for every
|
||||
matching version of the package. This will show which version of jsdom
|
||||
was required by each matching version of yui3:</p>
|
||||
|
||||
<pre><code>npm.commands.view(["yui3@'>0.5.4'", "dependencies.jsdom"], callback)</code></pre>
|
||||
<pre><code>npm.commands.view(["yui3@'>0.5.4'", "dependencies.jsdom"], callback)</code></pre>
|
||||
|
||||
<h2 id="OUTPUT">OUTPUT</h2>
|
||||
|
||||
|
@ -86,7 +86,7 @@ will be prefixed with the version it applies to.</p>
|
|||
<p>If multiple fields are requested, than each of them are prefixed with
|
||||
the field name.</p>
|
||||
|
||||
<p>Console output can be disabled by setting the 'silent' parameter to true.</p>
|
||||
<p>Console output can be disabled by setting the 'silent' parameter to true.</p>
|
||||
|
||||
<h2 id="RETURN-VALUE">RETURN VALUE</h2>
|
||||
|
||||
|
@ -99,7 +99,7 @@ the field name.</p>
|
|||
|
||||
<p>corresponding to the list of fields selected.</p>
|
||||
</div>
|
||||
<p id="footer">view — npm@1.1.46</p>
|
||||
<p id="footer">view — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -16,12 +16,12 @@
|
|||
|
||||
<p>Print the <code>username</code> config to standard output.</p>
|
||||
|
||||
<p>'args' is never used and callback is never called with data.
|
||||
'args' must be present or things will break.</p>
|
||||
<p>'args' is never used and callback is never called with data.
|
||||
'args' must be present or things will break.</p>
|
||||
|
||||
<p>This function is not useful programmatically</p>
|
||||
</div>
|
||||
<p id="footer">whoami — npm@1.1.46</p>
|
||||
<p id="footer">whoami — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
<p>This is just enough info to get you up and running.</p>
|
||||
|
||||
<p>Much more info available via <code>npm help</code> once it's installed.</p>
|
||||
<p>Much more info available via <code>npm help</code> once it's installed.</p>
|
||||
|
||||
<h2 id="IMPORTANT">IMPORTANT</h2>
|
||||
|
||||
|
@ -42,38 +42,25 @@ paths, etc.) then read on.</p>
|
|||
|
||||
<h2 id="Fancy-Install-Unix">Fancy Install (Unix)</h2>
|
||||
|
||||
<p>To install npm with one command, do this:</p>
|
||||
|
||||
<pre><code>curl http://npmjs.org/install.sh | sh</code></pre>
|
||||
|
||||
<p>To skip the npm 0.x cleanup, do this:</p>
|
||||
|
||||
<pre><code>curl http://npmjs.org/install.sh | clean=no sh</code></pre>
|
||||
|
||||
<p>To say "yes" to the 0.x cleanup, but skip the prompt:</p>
|
||||
|
||||
<pre><code>curl http://npmjs.org/install.sh | clean=yes sh</code></pre>
|
||||
|
||||
<p>If you get permission errors, you'll need to <strong>run</strong> the script as root.
|
||||
(Note, just putting <code>sudo</code> in front of the <code>curl</code> will <strong>fetch</strong> the script
|
||||
as root.)</p>
|
||||
<p>There's a pretty robust install script at
|
||||
<a href="https://npmjs.org/install.sh">https://npmjs.org/install.sh</a>. You can download that and run it.</p>
|
||||
|
||||
<h3 id="Slightly-Fancier">Slightly Fancier</h3>
|
||||
|
||||
<p>You can set any npm configuration params with that script:</p>
|
||||
|
||||
<pre><code>curl http://npmjs.org/install.sh | npm_config_prefix=/some/path sh</code></pre>
|
||||
<p>npm<em>config</em>prefix=/some/path sh install.sh</p>
|
||||
|
||||
<p>Or, you can run it in uber-debuggery mode:</p>
|
||||
|
||||
<pre><code>curl http://npmjs.org/install.sh | npm_debug=1 sh</code></pre>
|
||||
<p>npm_debug=1 sh install.sh</p>
|
||||
|
||||
<h3 id="Even-Fancier">Even Fancier</h3>
|
||||
|
||||
<p>Get the code with git. Use <code>make</code> to build the docs and do other stuff.
|
||||
If you plan on hacking on npm, <code>make link</code> is your friend.</p>
|
||||
|
||||
<p>If you've got the npm source code, you can also semi-permanently set
|
||||
<p>If you've got the npm source code, you can also semi-permanently set
|
||||
arbitrary config keys using the <code>./configure --key=val ...</code>, and then
|
||||
run npm commands by doing <code>node cli.js <cmd> <args></code>. (This is helpful
|
||||
for testing, or running stuff without actually installing npm itself.)</p>
|
||||
|
@ -83,33 +70,18 @@ for testing, or running stuff without actually installing npm itself.)</p>
|
|||
<p>You can download a zip file from <a href="http://npmjs.org/dist/">http://npmjs.org/dist/</a>, and unpack it
|
||||
in the same folder where node.exe lives.</p>
|
||||
|
||||
<p>If that's not fancy enough for you, then you can fetch the code with
|
||||
<p>If that's not fancy enough for you, then you can fetch the code with
|
||||
git, and mess with it directly.</p>
|
||||
|
||||
<h2 id="Installing-on-Cygwin">Installing on Cygwin</h2>
|
||||
|
||||
<p>No.</p>
|
||||
|
||||
<h2 id="Dev-Install">Dev Install</h2>
|
||||
|
||||
<p>To install the latest <strong>unstable</strong> development version from git:</p>
|
||||
|
||||
<pre><code>git clone https://github.com/isaacs/npm.git
|
||||
cd npm
|
||||
sudo make install # (or: `node cli.js install -gf`)</code></pre>
|
||||
|
||||
<p>If you're sitting in the code folder reading this document in your
|
||||
terminal, then you've already got the code. Just do:</p>
|
||||
|
||||
<pre><code>sudo make install</code></pre>
|
||||
|
||||
<p>and npm will install itself.</p>
|
||||
|
||||
<h2 id="Permissions-when-Using-npm-to-Install-Other-Stuff">Permissions when Using npm to Install Other Stuff</h2>
|
||||
|
||||
<p><strong>tl;dr</strong></p>
|
||||
|
||||
<ul><li>Use <code>sudo</code> for greater safety. Or don't, if you prefer not to.</li><li>npm will downgrade permissions if it's root before running any build
|
||||
<ul><li>Use <code>sudo</code> for greater safety. Or don't, if you prefer not to.</li><li>npm will downgrade permissions if it's root before running any build
|
||||
scripts that package authors specified.</li></ul>
|
||||
|
||||
<h3 id="More-details">More details...</h3>
|
||||
|
@ -122,7 +94,7 @@ to running any package build or test commands.</p>
|
|||
support uid switching, then npm will not attempt to change the userid.</p>
|
||||
|
||||
<p>If you would like to ensure that npm <strong>always</strong> runs scripts as the
|
||||
"nobody" user, and have it fail if it cannot downgrade permissions, then
|
||||
"nobody" user, and have it fail if it cannot downgrade permissions, then
|
||||
set the following configuration param:</p>
|
||||
|
||||
<pre><code>npm config set unsafe-perm false</code></pre>
|
||||
|
@ -142,7 +114,7 @@ set the following configuration param:</p>
|
|||
<h2 id="More-Severe-Uninstalling">More Severe Uninstalling</h2>
|
||||
|
||||
<p>Usually, the above instructions are sufficient. That will remove
|
||||
npm, but leave behind anything you've installed.</p>
|
||||
npm, but leave behind anything you've installed.</p>
|
||||
|
||||
<p>If you would like to remove all the packages that you have installed,
|
||||
then you can use the <code>npm ls</code> command to find them, and then <code>npm rm</code> to
|
||||
|
@ -167,16 +139,24 @@ you have chosen.</p>
|
|||
<h2 id="Using-npm-Programmatically">Using npm Programmatically</h2>
|
||||
|
||||
<p>If you would like to use npm programmatically, you can do that.
|
||||
It's not very well documented, but it <em>is</em> rather simple.</p>
|
||||
It's not very well documented, but it <em>is</em> rather simple.</p>
|
||||
|
||||
<pre><code>var npm = require("npm")
|
||||
<p>Most of the time, unless you actually want to do all the things that
|
||||
npm does, you should try using one of npm's dependencies rather than
|
||||
using npm itself, if possible.</p>
|
||||
|
||||
<p>Eventually, npm will be just a thin cli wrapper around the modules
|
||||
that it depends on, but for now, there are some things that you must
|
||||
use npm itself to do.</p>
|
||||
|
||||
<pre><code>var npm = require("npm")
|
||||
npm.load(myConfigObject, function (er) {
|
||||
if (er) return handlError(er)
|
||||
npm.commands.install(["some", "args"], function (er, data) {
|
||||
npm.commands.install(["some", "args"], function (er, data) {
|
||||
if (er) return commandFailed(er)
|
||||
// command succeeded, and data might have some info
|
||||
})
|
||||
npm.on("log", function (message) { .... })
|
||||
npm.on("log", function (message) { .... })
|
||||
})</code></pre>
|
||||
|
||||
<p>The <code>load</code> function takes an object hash of the command-line configs.
|
||||
|
@ -200,17 +180,16 @@ especially the <a href="http://npmjs.org/doc/faq.html">faq</a>.</p>
|
|||
|
||||
<p>You can use the <code>npm help</code> command to read any of them.</p>
|
||||
|
||||
<p>If you're a developer, and you want to use npm to publish your program,
|
||||
you should
|
||||
<a href="http://npmjs.org/doc/developers.html">read this</a></p>
|
||||
<p>If you're a developer, and you want to use npm to publish your program,
|
||||
you should <a href="http://npmjs.org/doc/developers.html">read this</a></p>
|
||||
|
||||
<h2 id="Legal-Stuff">Legal Stuff</h2>
|
||||
|
||||
<p>"npm" and "the npm registry" are owned by Isaac Z. Schlueter. All
|
||||
<p>"npm" and "the npm registry" are owned by Isaac Z. Schlueter. All
|
||||
rights not explicitly granted in the MIT license are reserved. See the
|
||||
included LICENSE file for more details.</p>
|
||||
|
||||
<p>"Node.js" and "node" are trademarks owned by Joyent, Inc. npm is not
|
||||
<p>"Node.js" and "node" are trademarks owned by Joyent, Inc. npm is not
|
||||
officially part of the Node.js project, and is neither owned by nor
|
||||
officially affiliated with Joyent, Inc.</p>
|
||||
|
||||
|
@ -228,17 +207,17 @@ Isaac Z. Schlueter at <a href="mailto:i@izs.me">i@izs.me</a>.</p>
|
|||
|
||||
<h3 id="In-plain-english">In plain english</h3>
|
||||
|
||||
<p>This is mine; not my employer's, not Node's, not Joyent's, not Ryan
|
||||
Dahl's.</p>
|
||||
<p>This is mine; not my employer's, not Node's, not Joyent's, not Ryan
|
||||
Dahl's.</p>
|
||||
|
||||
<p>If you publish something, it's yours, and you are solely accountable
|
||||
<p>If you publish something, it's yours, and you are solely accountable
|
||||
for it. Not me, not Node, not Joyent, not Ryan Dahl.</p>
|
||||
|
||||
<p>If other people publish something, it's theirs. Not mine, not Node's,
|
||||
not Joyent's, not Ryan Dahl's.</p>
|
||||
<p>If other people publish something, it's theirs. Not mine, not Node's,
|
||||
not Joyent's, not Ryan Dahl's.</p>
|
||||
|
||||
<p>Yes, you can publish something evil. It will be removed promptly if
|
||||
reported, and we'll lose respect for you. But there is no vetting
|
||||
reported, and we'll lose respect for you. But there is no vetting
|
||||
process for published modules.</p>
|
||||
|
||||
<p>If this concerns you, inspect the source before using packages.</p>
|
||||
|
@ -251,7 +230,7 @@ process for published modules.</p>
|
|||
<a href="http://github.com/isaacs/npm/issues">http://github.com/isaacs/npm/issues</a></li><li>email:
|
||||
<a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com</a></li></ul>
|
||||
|
||||
<p>Be sure to include <em>all</em> of the output from the npm command that didn't work
|
||||
<p>Be sure to include <em>all</em> of the output from the npm command that didn't work
|
||||
as expected. The <code>npm-debug.log</code> file is also helpful to provide.</p>
|
||||
|
||||
<p>You can also look for isaacs in #node.js on irc://irc.freenode.net. He
|
||||
|
@ -261,7 +240,7 @@ will no doubt tell you to put the output in a gist or email.</p>
|
|||
|
||||
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/index.html">index(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer"><a href="../doc/README.html">README</a> — npm@1.1.46</p>
|
||||
<p id="footer"><a href="../doc/README.html">README</a> — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -39,7 +39,7 @@ authorize on a new machine.</p>
|
|||
|
||||
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">adduser — npm@1.1.46</p>
|
||||
<p id="footer">adduser — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
<ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">bin — npm@1.1.46</p>
|
||||
<p id="footer">bin — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This command tries to guess at the likely location of a package's
|
||||
<p>This command tries to guess at the likely location of a package's
|
||||
bug tracker URL, and then tries to open it using the <code>--browser</code>
|
||||
config param.</p>
|
||||
|
||||
|
@ -22,7 +22,7 @@ config param.</p>
|
|||
|
||||
<h3 id="browser">browser</h3>
|
||||
|
||||
<ul><li>Default: OS X: <code>"open"</code>, others: <code>"google-chrome"</code></li><li>Type: String</li></ul>
|
||||
<ul><li>Default: OS X: <code>"open"</code>, others: <code>"google-chrome"</code></li><li>Type: String</li></ul>
|
||||
|
||||
<p>The browser that is called by the <code>npm bugs</code> command to open websites.</p>
|
||||
|
||||
|
@ -36,7 +36,7 @@ config param.</p>
|
|||
|
||||
<ul><li><a href="../doc/docs.html">docs(1)</a></li><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">bugs — npm@1.1.46</p>
|
||||
<p id="footer">bugs — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -25,7 +25,7 @@ A folder containing a <code>package.json</code> file in its root.</li></ul>
|
|||
|
||||
<ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">build — npm@1.1.46</p>
|
||||
<p id="footer">build — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -20,7 +20,7 @@ install packages into the local space.</p>
|
|||
|
||||
<ul><li><a href="../doc/install.html">install(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">bundle — npm@1.1.46</p>
|
||||
<p id="footer">bundle — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -66,7 +66,7 @@ they do not make an HTTP request to the registry.</p>
|
|||
|
||||
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">cache — npm@1.1.46</p>
|
||||
<p id="footer">cache — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -12,15 +12,15 @@
|
|||
|
||||
<h3 id="1-1-3-1-1-4">1.1.3, 1.1.4</h3>
|
||||
|
||||
<ul><li>Update request to support HTTPS-over-HTTP proxy tunneling</li><li>Throw on undefined envs in config settings</li><li>Update which to 1.0.5</li><li>Fix windows UNC busyloop in findPrefix</li><li>Bundle nested bundleDependencies properly</li><li>Alias adduser to add-user</li><li>Doc updates (Christian Howe, Henrik Hodne, Andrew Lunny)</li><li>ignore logfd/outfd streams in makeEnv() (Rod Vagg)</li><li>shrinkwrap: Behave properly with url-installed deps</li><li>install: Support --save with url install targets</li><li>Support installing naked tars or single-file modules from urls etc.</li><li>init: Don't add engines section</li><li>Don't run make clean on rebuild</li><li>Added missing unicode replacement (atomizer)</li></ul>
|
||||
<ul><li>Update request to support HTTPS-over-HTTP proxy tunneling</li><li>Throw on undefined envs in config settings</li><li>Update which to 1.0.5</li><li>Fix windows UNC busyloop in findPrefix</li><li>Bundle nested bundleDependencies properly</li><li>Alias adduser to add-user</li><li>Doc updates (Christian Howe, Henrik Hodne, Andrew Lunny)</li><li>ignore logfd/outfd streams in makeEnv() (Rod Vagg)</li><li>shrinkwrap: Behave properly with url-installed deps</li><li>install: Support --save with url install targets</li><li>Support installing naked tars or single-file modules from urls etc.</li><li>init: Don't add engines section</li><li>Don't run make clean on rebuild</li><li>Added missing unicode replacement (atomizer)</li></ul>
|
||||
|
||||
<h3 id="1-1-2">1.1.2</h3>
|
||||
|
||||
<p>Dave Pacheco (2):
|
||||
add "npm shrinkwrap"</p>
|
||||
add "npm shrinkwrap"</p>
|
||||
|
||||
<p>Martin Cooper (1):
|
||||
Fix #1753 Make a copy of the cached objects we'll modify.</p>
|
||||
Fix #1753 Make a copy of the cached objects we'll modify.</p>
|
||||
|
||||
<p>Tim Oxley (1):
|
||||
correctly remove readme from default npm view command.</p>
|
||||
|
@ -32,7 +32,7 @@
|
|||
update minimatch
|
||||
update request
|
||||
Experimental: single-file modules
|
||||
Fix #2172 Don't remove global mans uninstalling local pkgs
|
||||
Fix #2172 Don't remove global mans uninstalling local pkgs
|
||||
Add --versions flag to show the version of node as well
|
||||
Support --json flag for ls output
|
||||
update request to 2.9.151</p>
|
||||
|
@ -47,11 +47,11 @@
|
|||
|
||||
<h3 id="0-3">0.3</h3>
|
||||
|
||||
<ul><li>More correct permission/uid handling when running as root </li><li>Require node 0.4.0 </li><li>Reduce featureset </li><li>Packages without "main" modules don't export modules</li><li>Remove support for invalid JSON (since node doesn't support it)</li></ul>
|
||||
<ul><li>More correct permission/uid handling when running as root </li><li>Require node 0.4.0 </li><li>Reduce featureset </li><li>Packages without "main" modules don't export modules</li><li>Remove support for invalid JSON (since node doesn't support it)</li></ul>
|
||||
|
||||
<h3 id="0-2">0.2</h3>
|
||||
|
||||
<ul><li>First allegedly "stable" release</li><li>Most functionality implemented </li><li>Used shim files and <code>name@version</code> symlinks</li><li>Feature explosion</li><li>Kind of a mess</li></ul>
|
||||
<ul><li>First allegedly "stable" release</li><li>Most functionality implemented </li><li>Used shim files and <code>name@version</code> symlinks</li><li>Feature explosion</li><li>Kind of a mess</li></ul>
|
||||
|
||||
<h3 id="0-1">0.1</h3>
|
||||
|
||||
|
@ -65,7 +65,7 @@
|
|||
|
||||
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">changelog — npm@1.1.46</p>
|
||||
<p id="footer">changelog — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -6,27 +6,27 @@
|
|||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<h1><a href="../doc/coding-style.html">coding-style</a></h1> <p>npm's "funny" coding style</p>
|
||||
<h1><a href="../doc/coding-style.html">coding-style</a></h1> <p>npm's "funny" coding style</p>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>npm's coding style is a bit unconventional. It is not different for
|
||||
difference's sake, but rather a carefully crafted style that is
|
||||
<p>npm's coding style is a bit unconventional. It is not different for
|
||||
difference's sake, but rather a carefully crafted style that is
|
||||
designed to reduce visual clutter and make bugs more apparent.</p>
|
||||
|
||||
<p>If you want to contribute to npm (which is very encouraged), you should
|
||||
make your code conform to npm's style.</p>
|
||||
make your code conform to npm's style.</p>
|
||||
|
||||
<h2 id="Line-Length">Line Length</h2>
|
||||
|
||||
<p>Keep lines shorter than 80 characters. It's better for lines to be
|
||||
<p>Keep lines shorter than 80 characters. It's better for lines to be
|
||||
too short than to be too long. Break up long lists, objects, and other
|
||||
statements onto multiple lines.</p>
|
||||
|
||||
<h2 id="Indentation">Indentation</h2>
|
||||
|
||||
<p>Two-spaces. Tabs are better, but they look like hell in web browsers
|
||||
(and on github), and node uses 2 spaces, so that's that.</p>
|
||||
(and on github), and node uses 2 spaces, so that's that.</p>
|
||||
|
||||
<p>Configure your editor appropriately.</p>
|
||||
|
||||
|
@ -43,8 +43,8 @@ statements onto multiple lines.</p>
|
|||
|
||||
<pre><code>function () {</code></pre>
|
||||
|
||||
<p>If a block needs to wrap to the next line, use a curly brace. Don't
|
||||
use it if it doesn't.</p>
|
||||
<p>If a block needs to wrap to the next line, use a curly brace. Don't
|
||||
use it if it doesn't.</p>
|
||||
|
||||
<p>Bad:</p>
|
||||
|
||||
|
@ -61,10 +61,10 @@ while (foo) {
|
|||
|
||||
<h2 id="Semicolons">Semicolons</h2>
|
||||
|
||||
<p>Don't use them except in four situations:</p>
|
||||
<p>Don't use them except in four situations:</p>
|
||||
|
||||
<ul><li><code>for (;;)</code> loops. They're actually required.</li><li>null loops like: <code>while (something) ;</code> (But you'd better have a good
|
||||
reason for doing that.)</li><li><code>case "foo": doSomething(); break</code></li><li>In front of a leading <code>(</code> or <code>[</code> at the start of the line.
|
||||
<ul><li><code>for (;;)</code> loops. They're actually required.</li><li>null loops like: <code>while (something) ;</code> (But you'd better have a good
|
||||
reason for doing that.)</li><li><code>case "foo": doSomething(); break</code></li><li>In front of a leading <code>(</code> or <code>[</code> at the start of the line.
|
||||
This prevents the expression from being interpreted
|
||||
as a function call or property access, respectively.</li></ul>
|
||||
|
||||
|
@ -74,9 +74,9 @@ as a function call or property access, respectively.</li></ul>
|
|||
;[a, b, c].forEach(doSomething)
|
||||
for (var i = 0; i < 10; i ++) {
|
||||
switch (state) {
|
||||
case "begin": start(); continue
|
||||
case "end": finish(); break
|
||||
default: throw new Error("unknown state")
|
||||
case "begin": start(); continue
|
||||
case "end": finish(); break
|
||||
default: throw new Error("unknown state")
|
||||
}
|
||||
end()
|
||||
}</code></pre>
|
||||
|
@ -91,15 +91,15 @@ across multiple lines, put the comma at the start of the next
|
|||
line, directly below the token that starts the list. Put the
|
||||
final token in the list on a line by itself. For example:</p>
|
||||
|
||||
<pre><code>var magicWords = [ "abracadabra"
|
||||
, "gesundheit"
|
||||
, "ventrilo"
|
||||
<pre><code>var magicWords = [ "abracadabra"
|
||||
, "gesundheit"
|
||||
, "ventrilo"
|
||||
]
|
||||
, spells = { "fireball" : function () { setOnFire() }
|
||||
, "water" : function () { putOut() }
|
||||
, spells = { "fireball" : function () { setOnFire() }
|
||||
, "water" : function () { putOut() }
|
||||
}
|
||||
, a = 1
|
||||
, b = "abc"
|
||||
, b = "abc"
|
||||
, etc
|
||||
, somethingElse</code></pre>
|
||||
|
||||
|
@ -108,8 +108,8 @@ final token in the list on a line by itself. For example:</p>
|
|||
<p>Put a single space in front of ( for anything other than a function call.
|
||||
Also use a single space wherever it makes things more readable.</p>
|
||||
|
||||
<p>Don't leave trailing whitespace at the end of lines. Don't indent empty
|
||||
lines. Don't use more spaces than are helpful.</p>
|
||||
<p>Don't leave trailing whitespace at the end of lines. Don't indent empty
|
||||
lines. Don't use more spaces than are helpful.</p>
|
||||
|
||||
<h2 id="Functions">Functions</h2>
|
||||
|
||||
|
@ -125,12 +125,12 @@ methodology.</p>
|
|||
<p>The callback should always be the last argument in the list. Its first
|
||||
argument is the Error or null.</p>
|
||||
|
||||
<p>Be very careful never to ever ever throw anything. It's worse than useless.
|
||||
<p>Be very careful never to ever ever throw anything. It's worse than useless.
|
||||
Just send the error message back as the first argument to the callback.</p>
|
||||
|
||||
<h2 id="Errors">Errors</h2>
|
||||
|
||||
<p>Always create a new Error object with your message. Don't just return a
|
||||
<p>Always create a new Error object with your message. Don't just return a
|
||||
string message to the callback. Stack traces are handy.</p>
|
||||
|
||||
<h2 id="Logging">Logging</h2>
|
||||
|
@ -140,18 +140,18 @@ utility.</p>
|
|||
|
||||
<p>Please clean up logs when they are no longer helpful. In particular,
|
||||
logging the same object over and over again is not helpful. Logs should
|
||||
report what's happening so that it's easier to track down where a fault
|
||||
report what's happening so that it's easier to track down where a fault
|
||||
occurs.</p>
|
||||
|
||||
<p>Use appropriate log levels. See <code><a href="../doc/config.html">config(1)</a></code> and search for
|
||||
"loglevel".</p>
|
||||
"loglevel".</p>
|
||||
|
||||
<h2 id="Case-naming-etc">Case, naming, etc.</h2>
|
||||
|
||||
<p>Use <code>lowerCamelCase</code> for multiword identifiers when they refer to objects,
|
||||
functions, methods, members, or anything not specified in this section.</p>
|
||||
|
||||
<p>Use <code>UpperCamelCase</code> for class names (things that you'd pass to "new").</p>
|
||||
<p>Use <code>UpperCamelCase</code> for class names (things that you'd pass to "new").</p>
|
||||
|
||||
<p>Use <code>all-lower-hyphen-css-case</code> for multiword filenames and config keys.</p>
|
||||
|
||||
|
@ -162,17 +162,17 @@ and are rarely used.</p>
|
|||
|
||||
<p>Use a single uppercase letter for function names where the function
|
||||
would normally be anonymous, but needs to call itself recursively. It
|
||||
makes it clear that it's a "throwaway" function.</p>
|
||||
makes it clear that it's a "throwaway" function.</p>
|
||||
|
||||
<h2 id="null-undefined-false-0">null, undefined, false, 0</h2>
|
||||
|
||||
<p>Boolean variables and functions should always be either <code>true</code> or
|
||||
<code>false</code>. Don't set it to 0 unless it's supposed to be a number.</p>
|
||||
<code>false</code>. Don't set it to 0 unless it's supposed to be a number.</p>
|
||||
|
||||
<p>When something is intentionally missing or removed, set it to <code>null</code>.</p>
|
||||
|
||||
<p>Don't set things to <code>undefined</code>. Reserve that value to mean "not yet
|
||||
set to anything."</p>
|
||||
<p>Don't set things to <code>undefined</code>. Reserve that value to mean "not yet
|
||||
set to anything."</p>
|
||||
|
||||
<p>Boolean objects are verboten.</p>
|
||||
|
||||
|
@ -180,7 +180,7 @@ set to anything."</p>
|
|||
|
||||
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">coding-style — npm@1.1.46</p>
|
||||
<p id="footer">coding-style — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -26,14 +26,14 @@ such as <code>/usr/local/etc/bash_completion.d/npm</code> if you have a system
|
|||
that will read that file for you.</p>
|
||||
|
||||
<p>When <code>COMP_CWORD</code>, <code>COMP_LINE</code>, and <code>COMP_POINT</code> are defined in the
|
||||
environment, <code>npm completion</code> acts in "plumbing mode", and outputs
|
||||
environment, <code>npm completion</code> acts in "plumbing mode", and outputs
|
||||
completions based on the arguments.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">completion — npm@1.1.46</p>
|
||||
<p id="footer">completion — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -25,7 +25,7 @@ npm set <key> <value> [--global]</code></pre>
|
|||
<h3 id="Command-Line-Flags">Command Line Flags</h3>
|
||||
|
||||
<p>Putting <code>--foo bar</code> on the command line sets the
|
||||
<code>foo</code> configuration parameter to <code>"bar"</code>. A <code>--</code> argument tells the cli
|
||||
<code>foo</code> configuration parameter to <code>"bar"</code>. A <code>--</code> argument tells the cli
|
||||
parser to stop reading flags. A <code>--flag</code> parameter that is at the <em>end</em> of
|
||||
the command will be given the value of <code>true</code>.</p>
|
||||
|
||||
|
@ -53,7 +53,7 @@ This file is an ini-file formatted list of <code>key = value</code> parameters</
|
|||
|
||||
<p><code>path/to/npm/itself/npmrc</code></p>
|
||||
|
||||
<p>This is an unchangeable "builtin"
|
||||
<p>This is an unchangeable "builtin"
|
||||
configuration file that npm keeps consistent across updates. Set
|
||||
fields in here using the <code>./configure</code> script that comes with npm.
|
||||
This is primarily for distribution maintainers to override default
|
||||
|
@ -74,7 +74,7 @@ defaults if nothing else is specified.</p>
|
|||
|
||||
<p>Sets the config key to the value.</p>
|
||||
|
||||
<p>If value is omitted, then it sets it to "true".</p>
|
||||
<p>If value is omitted, then it sets it to "true".</p>
|
||||
|
||||
<h3 id="get">get</h3>
|
||||
|
||||
|
@ -127,13 +127,13 @@ npm ls --global --parseable --long --loglevel info</code></pre>
|
|||
<h2 id="Per-Package-Config-Settings">Per-Package Config Settings</h2>
|
||||
|
||||
<p>When running scripts (see <code><a href="../doc/scripts.html">scripts(1)</a></code>)
|
||||
the package.json "config" keys are overwritten in the environment if
|
||||
the package.json "config" keys are overwritten in the environment if
|
||||
there is a config param of <code><name>[@<version>]:<key></code>. For example, if
|
||||
the package.json has this:</p>
|
||||
|
||||
<pre><code>{ "name" : "foo"
|
||||
, "config" : { "port" : "8080" }
|
||||
, "scripts" : { "start" : "node server.js" } }</code></pre>
|
||||
<pre><code>{ "name" : "foo"
|
||||
, "config" : { "port" : "8080" }
|
||||
, "scripts" : { "start" : "node server.js" } }</code></pre>
|
||||
|
||||
<p>and the server.js is this:</p>
|
||||
|
||||
|
@ -154,7 +154,7 @@ even for <code>GET</code> requests.</p>
|
|||
|
||||
<h3 id="browser">browser</h3>
|
||||
|
||||
<ul><li>Default: OS X: <code>"open"</code>, others: <code>"google-chrome"</code></li><li>Type: String</li></ul>
|
||||
<ul><li>Default: OS X: <code>"open"</code>, others: <code>"google-chrome"</code></li><li>Type: String</li></ul>
|
||||
|
||||
<p>The browser that is called by the <code>npm docs</code> command to open websites.</p>
|
||||
|
||||
|
@ -165,7 +165,7 @@ even for <code>GET</code> requests.</p>
|
|||
<p>The Certificate Authority signing certificate that is trusted for SSL
|
||||
connections to the registry.</p>
|
||||
|
||||
<p>Set to <code>null</code> to only allow "known" registrars, or to a specific CA cert
|
||||
<p>Set to <code>null</code> to only allow "known" registrars, or to a specific CA cert
|
||||
to trust only that specific signing authority.</p>
|
||||
|
||||
<p>See also the <code>strict-ssl</code> config.</p>
|
||||
|
@ -174,7 +174,7 @@ to trust only that specific signing authority.</p>
|
|||
|
||||
<ul><li>Default: Windows: <code>%APPDATA%\npm-cache</code>, Posix: <code>~/.npm</code></li><li>Type: path</li></ul>
|
||||
|
||||
<p>The location of npm's cache directory. See <code><a href="../doc/cache.html">cache(1)</a></code></p>
|
||||
<p>The location of npm's cache directory. See <code><a href="../doc/cache.html">cache(1)</a></code></p>
|
||||
|
||||
<h3 id="cache-lock-stale">cache-lock-stale</h3>
|
||||
|
||||
|
@ -216,9 +216,9 @@ explicitly used, and that only GET requests use the cache.</p>
|
|||
|
||||
<h3 id="color">color</h3>
|
||||
|
||||
<ul><li>Default: true on Posix, false on Windows</li><li>Type: Boolean or <code>"always"</code></li></ul>
|
||||
<ul><li>Default: true on Posix, false on Windows</li><li>Type: Boolean or <code>"always"</code></li></ul>
|
||||
|
||||
<p>If false, never shows colors. If <code>"always"</code> then always shows colors.
|
||||
<p>If false, never shows colors. If <code>"always"</code> then always shows colors.
|
||||
If true, then only prints color codes for tty file descriptors.</p>
|
||||
|
||||
<h3 id="coverage">coverage</h3>
|
||||
|
@ -252,8 +252,8 @@ set.</p>
|
|||
|
||||
<h3 id="editor">editor</h3>
|
||||
|
||||
<ul><li>Default: <code>EDITOR</code> environment variable if set, or <code>"vi"</code> on Posix,
|
||||
or <code>"notepad"</code> on Windows.</li><li>Type: path</li></ul>
|
||||
<ul><li>Default: <code>EDITOR</code> environment variable if set, or <code>"vi"</code> on Posix,
|
||||
or <code>"notepad"</code> on Windows.</li><li>Type: path</li></ul>
|
||||
|
||||
<p>The command to run for <code>npm edit</code> or <code>npm config edit</code>.</p>
|
||||
|
||||
|
@ -277,33 +277,33 @@ the current Node.js version.</p>
|
|||
|
||||
<ul><li>Default: 2</li><li>Type: Number</li></ul>
|
||||
|
||||
<p>The "retries" config for the <code>retry</code> module to use when fetching
|
||||
<p>The "retries" config for the <code>retry</code> module to use when fetching
|
||||
packages from the registry.</p>
|
||||
|
||||
<h3 id="fetch-retry-factor">fetch-retry-factor</h3>
|
||||
|
||||
<ul><li>Default: 10</li><li>Type: Number</li></ul>
|
||||
|
||||
<p>The "factor" config for the <code>retry</code> module to use when fetching
|
||||
<p>The "factor" config for the <code>retry</code> module to use when fetching
|
||||
packages.</p>
|
||||
|
||||
<h3 id="fetch-retry-mintimeout">fetch-retry-mintimeout</h3>
|
||||
|
||||
<ul><li>Default: 10000 (10 seconds)</li><li>Type: Number</li></ul>
|
||||
|
||||
<p>The "minTimeout" config for the <code>retry</code> module to use when fetching
|
||||
<p>The "minTimeout" config for the <code>retry</code> module to use when fetching
|
||||
packages.</p>
|
||||
|
||||
<h3 id="fetch-retry-maxtimeout">fetch-retry-maxtimeout</h3>
|
||||
|
||||
<ul><li>Default: 60000 (1 minute)</li><li>Type: Number</li></ul>
|
||||
|
||||
<p>The "maxTimeout" config for the <code>retry</code> module to use when fetching
|
||||
<p>The "maxTimeout" config for the <code>retry</code> module to use when fetching
|
||||
packages.</p>
|
||||
|
||||
<h3 id="git">git</h3>
|
||||
|
||||
<ul><li>Default: <code>"git"</code></li><li>Type: String</li></ul>
|
||||
<ul><li>Default: <code>"git"</code></li><li>Type: String</li></ul>
|
||||
|
||||
<p>The command to use for git commands. If git is installed on the
|
||||
computer, but is not in the <code>PATH</code>, then set this to the full path to
|
||||
|
@ -313,7 +313,7 @@ the git binary.</p>
|
|||
|
||||
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
|
||||
|
||||
<p>Operates in "global" mode, so that packages are installed into the
|
||||
<p>Operates in "global" mode, so that packages are installed into the
|
||||
<code>prefix</code> folder instead of the current working directory. See
|
||||
<code><a href="../doc/folders.html">folders(1)</a></code> for more on the differences in behavior.</p>
|
||||
|
||||
|
@ -333,7 +333,7 @@ current working directory.</li><li>bin files are linked to <code>prefix/bin</cod
|
|||
<p>The config file to read for global ignore patterns to apply to all users
|
||||
and all projects.</p>
|
||||
|
||||
<p>If not found, but there is a "gitignore" file in the
|
||||
<p>If not found, but there is a "gitignore" file in the
|
||||
same directory, then that will be used instead.</p>
|
||||
|
||||
<h3 id="group">group</h3>
|
||||
|
@ -358,7 +358,7 @@ user.</p>
|
|||
|
||||
<h3 id="ignore">ignore</h3>
|
||||
|
||||
<ul><li>Default: ""</li><li>Type: string</li></ul>
|
||||
<ul><li>Default: ""</li><li>Type: string</li></ul>
|
||||
|
||||
<p>A white-space separated list of glob patterns of files to always exclude
|
||||
from packages when building tarballs.</p>
|
||||
|
@ -374,27 +374,27 @@ for more information, or <a href="../doc/init.html">init(1)</a>.</p>
|
|||
|
||||
<h3 id="init-version">init.version</h3>
|
||||
|
||||
<ul><li>Default: "0.0.0"</li><li>Type: semver</li></ul>
|
||||
<ul><li>Default: "0.0.0"</li><li>Type: semver</li></ul>
|
||||
|
||||
<p>The value <code>npm init</code> should use by default for the package version.</p>
|
||||
|
||||
<h3 id="init-author-name">init.author.name</h3>
|
||||
|
||||
<ul><li>Default: ""</li><li>Type: String</li></ul>
|
||||
<ul><li>Default: ""</li><li>Type: String</li></ul>
|
||||
|
||||
<p>The value <code>npm init</code> should use by default for the package author's name.</p>
|
||||
<p>The value <code>npm init</code> should use by default for the package author's name.</p>
|
||||
|
||||
<h3 id="init-author-email">init.author.email</h3>
|
||||
|
||||
<ul><li>Default: ""</li><li>Type: String</li></ul>
|
||||
<ul><li>Default: ""</li><li>Type: String</li></ul>
|
||||
|
||||
<p>The value <code>npm init</code> should use by default for the package author's email.</p>
|
||||
<p>The value <code>npm init</code> should use by default for the package author's email.</p>
|
||||
|
||||
<h3 id="init-author-url">init.author.url</h3>
|
||||
|
||||
<ul><li>Default: ""</li><li>Type: String</li></ul>
|
||||
<ul><li>Default: ""</li><li>Type: String</li></ul>
|
||||
|
||||
<p>The value <code>npm init</code> should use by default for the package author's homepage.</p>
|
||||
<p>The value <code>npm init</code> should use by default for the package author's homepage.</p>
|
||||
|
||||
<h3 id="json">json</h3>
|
||||
|
||||
|
@ -422,13 +422,13 @@ being installed locally.</li></ul>
|
|||
|
||||
<h3 id="loglevel">loglevel</h3>
|
||||
|
||||
<ul><li>Default: "http"</li><li>Type: String</li><li>Values: "silent", "win", "error", "warn", "http", "info", "verbose", "silly"</li></ul>
|
||||
<ul><li>Default: "http"</li><li>Type: String</li><li>Values: "silent", "win", "error", "warn", "http", "info", "verbose", "silly"</li></ul>
|
||||
|
||||
<p>What level of logs to report. On failure, <em>all</em> logs are written to
|
||||
<code>npm-debug.log</code> in the current working directory.</p>
|
||||
|
||||
<p>Any logs of a higher level than the setting are shown.
|
||||
The default is "http", which shows http, warn, and error output.</p>
|
||||
The default is "http", which shows http, warn, and error output.</p>
|
||||
|
||||
<h3 id="logstream">logstream</h3>
|
||||
|
||||
|
@ -452,17 +452,17 @@ colored output if it is a TTY.</p>
|
|||
|
||||
<h3 id="message">message</h3>
|
||||
|
||||
<ul><li>Default: "%s"</li><li>Type: String</li></ul>
|
||||
<ul><li>Default: "%s"</li><li>Type: String</li></ul>
|
||||
|
||||
<p>Commit message which is used by <code>npm version</code> when creating version commit.</p>
|
||||
|
||||
<p>Any "%s" in the message will be replaced with the version number.</p>
|
||||
<p>Any "%s" in the message will be replaced with the version number.</p>
|
||||
|
||||
<h3 id="node-version">node-version</h3>
|
||||
|
||||
<ul><li>Default: process.version</li><li>Type: semver or false</li></ul>
|
||||
|
||||
<p>The node version to use when checking package's "engines" hash.</p>
|
||||
<p>The node version to use when checking package's "engines" hash.</p>
|
||||
|
||||
<h3 id="npat">npat</h3>
|
||||
|
||||
|
@ -493,7 +493,7 @@ standard output.</p>
|
|||
|
||||
<h3 id="prefix">prefix</h3>
|
||||
|
||||
<ul><li>Default: node's process.installPrefix</li><li>Type: path</li></ul>
|
||||
<ul><li>Default: node's process.installPrefix</li><li>Type: path</li></ul>
|
||||
|
||||
<p>The location to install global items. If set on the command line, then
|
||||
it forces non-global commands to run in the specified folder.</p>
|
||||
|
@ -502,10 +502,10 @@ it forces non-global commands to run in the specified folder.</p>
|
|||
|
||||
<ul><li>Default: false</li><li>Type: Boolean</li></ul>
|
||||
|
||||
<p>Set to true to run in "production" mode.</p>
|
||||
<p>Set to true to run in "production" mode.</p>
|
||||
|
||||
<ol><li>devDependencies are not installed at the topmost level when running
|
||||
local <code>npm install</code> without any arguments.</li><li>Set the NODE_ENV="production" for lifecycle scripts.</li></ol>
|
||||
local <code>npm install</code> without any arguments.</li><li>Set the NODE_ENV="production" for lifecycle scripts.</li></ol>
|
||||
|
||||
<h3 id="proprietary-attribs">proprietary-attribs</h3>
|
||||
|
||||
|
@ -588,27 +588,27 @@ hash.</p>
|
|||
|
||||
<h3 id="searchopts">searchopts</h3>
|
||||
|
||||
<ul><li>Default: ""</li><li>Type: String</li></ul>
|
||||
<ul><li>Default: ""</li><li>Type: String</li></ul>
|
||||
|
||||
<p>Space-separated options that are always passed to search.</p>
|
||||
|
||||
<h3 id="searchexclude">searchexclude</h3>
|
||||
|
||||
<ul><li>Default: ""</li><li>Type: String</li></ul>
|
||||
<ul><li>Default: ""</li><li>Type: String</li></ul>
|
||||
|
||||
<p>Space-separated options that limit the results from search.</p>
|
||||
|
||||
<h3 id="searchsort">searchsort</h3>
|
||||
|
||||
<ul><li>Default: "name"</li><li>Type: String</li><li>Values: "name", "-name", "date", "-date", "description",
|
||||
"-description", "keywords", "-keywords"</li></ul>
|
||||
<ul><li>Default: "name"</li><li>Type: String</li><li>Values: "name", "-name", "date", "-date", "description",
|
||||
"-description", "keywords", "-keywords"</li></ul>
|
||||
|
||||
<p>Indication of which field to sort search results by. Prefix with a <code>-</code>
|
||||
character to indicate reverse sort.</p>
|
||||
|
||||
<h3 id="shell">shell</h3>
|
||||
|
||||
<ul><li>Default: SHELL environment variable, or "bash" on Posix, or "cmd" on
|
||||
<ul><li>Default: SHELL environment variable, or "bash" on Posix, or "cmd" on
|
||||
Windows</li><li>Type: path</li></ul>
|
||||
|
||||
<p>The shell to run for the <code>npm explore</code> command.</p>
|
||||
|
@ -636,7 +636,7 @@ registry via https.</p>
|
|||
|
||||
<ul><li>Default: latest</li><li>Type: String</li></ul>
|
||||
|
||||
<p>If you ask npm to install a package and don't tell it a specific version, then
|
||||
<p>If you ask npm to install a package and don't tell it a specific version, then
|
||||
it will install the specified tag.</p>
|
||||
|
||||
<p>Also the tag that is added to the package@version specified by the <code>npm
|
||||
|
@ -644,7 +644,7 @@ tag</code> command, if no explicit tag is given.</p>
|
|||
|
||||
<h3 id="tmp">tmp</h3>
|
||||
|
||||
<ul><li>Default: TMPDIR environment variable, or "/tmp"</li><li>Type: path</li></ul>
|
||||
<ul><li>Default: TMPDIR environment variable, or "/tmp"</li><li>Type: path</li></ul>
|
||||
|
||||
<p>Where to store temporary files and folders. All temp files are deleted
|
||||
on success, but left behind on failure for forensic purposes.</p>
|
||||
|
@ -673,7 +673,7 @@ instead of complete help when doing <code><a href="../doc/help.html">help(1)</a>
|
|||
|
||||
<h3 id="user">user</h3>
|
||||
|
||||
<ul><li>Default: "nobody"</li><li>Type: String or Number</li></ul>
|
||||
<ul><li>Default: "nobody"</li><li>Type: String or Number</li></ul>
|
||||
|
||||
<p>The UID to set to when running package scripts as root.</p>
|
||||
|
||||
|
@ -702,7 +702,7 @@ that will be used instead.</p>
|
|||
|
||||
<ul><li>Default: 022</li><li>Type: Octal numeric string</li></ul>
|
||||
|
||||
<p>The "umask" value to use when setting the file creation mode on files
|
||||
<p>The "umask" value to use when setting the file creation mode on files
|
||||
and folders.</p>
|
||||
|
||||
<p>Folders and executables are given a mode which is <code>0777</code> masked against
|
||||
|
@ -721,18 +721,18 @@ this value. Thus, the defaults are <code>0755</code> and <code>0644</code> resp
|
|||
|
||||
<ul><li>Default: false</li><li>Type: boolean</li></ul>
|
||||
|
||||
<p>If true, output the npm version as well as node's <code>process.versions</code>
|
||||
<p>If true, output the npm version as well as node's <code>process.versions</code>
|
||||
hash, and exit successfully.</p>
|
||||
|
||||
<p>Only relevant when specified explicitly on the command line.</p>
|
||||
|
||||
<h3 id="viewer">viewer</h3>
|
||||
|
||||
<ul><li>Default: "man" on Posix, "browser" on Windows</li><li>Type: path</li></ul>
|
||||
<ul><li>Default: "man" on Posix, "browser" on Windows</li><li>Type: path</li></ul>
|
||||
|
||||
<p>The program to use to view help content.</p>
|
||||
|
||||
<p>Set to <code>"browser"</code> to view html help content in the default web browser.</p>
|
||||
<p>Set to <code>"browser"</code> to view html help content in the default web browser.</p>
|
||||
|
||||
<h3 id="yes">yes</h3>
|
||||
|
||||
|
@ -741,14 +741,14 @@ hash, and exit successfully.</p>
|
|||
<p>If set to <code>null</code>, then prompt the user for responses in some
|
||||
circumstances.</p>
|
||||
|
||||
<p>If set to <code>true</code>, then answer "yes" to any prompt. If set to <code>false</code>
|
||||
then answer "no" to any prompt.</p>
|
||||
<p>If set to <code>true</code>, then answer "yes" to any prompt. If set to <code>false</code>
|
||||
then answer "no" to any prompt.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">config — npm@1.1.46</p>
|
||||
<p id="footer">config — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -20,7 +20,7 @@ a deprecation warning to all who attempt to install it.</p>
|
|||
<p>It works on version ranges as well as specific versions, so you can do
|
||||
something like this:</p>
|
||||
|
||||
<pre><code>npm deprecate my-thing@"< 0.2.3" "critical bug fixed in v0.2.3"</code></pre>
|
||||
<pre><code>npm deprecate my-thing@"< 0.2.3" "critical bug fixed in v0.2.3"</code></pre>
|
||||
|
||||
<p>Note that you must be the package owner to deprecate something. See the
|
||||
<code>owner</code> and <code>adduser</code> help topics.</p>
|
||||
|
@ -29,7 +29,7 @@ something like this:</p>
|
|||
|
||||
<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">deprecate — npm@1.1.46</p>
|
||||
<p id="footer">deprecate — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>So, you've decided to use npm to develop (and maybe publish/deploy)
|
||||
<p>So, you've decided to use npm to develop (and maybe publish/deploy)
|
||||
your project.</p>
|
||||
|
||||
<p>Fantastic!</p>
|
||||
|
@ -24,11 +24,11 @@ that your users will do to install your program.</p>
|
|||
then do <code>man npm-thing</code> to get the documentation on a particular
|
||||
topic, or <code>npm help thing</code> to see the same information.</p>
|
||||
|
||||
<h2 id="What-is-a-package">What is a `package`</h2>
|
||||
<h2 id="What-is-a-package">What is a <code>package</code></h2>
|
||||
|
||||
<p>A package is:</p>
|
||||
|
||||
<ul><li>a) a folder containing a program described by a package.json file</li><li>b) a gzipped tarball containing (a)</li><li>c) a url that resolves to (b)</li><li>d) a <code><name>@<version></code> that is published on the registry with (c)</li><li>e) a <code><name>@<tag></code> that points to (d)</li><li>f) a <code><name></code> that has a "latest" tag satisfying (e)</li><li>g) a <code>git</code> url that, when cloned, results in (a).</li></ul>
|
||||
<ul><li>a) a folder containing a program described by a package.json file</li><li>b) a gzipped tarball containing (a)</li><li>c) a url that resolves to (b)</li><li>d) a <code><name>@<version></code> that is published on the registry with (c)</li><li>e) a <code><name>@<tag></code> that points to (d)</li><li>f) a <code><name></code> that has a "latest" tag satisfying (e)</li><li>g) a <code>git</code> url that, when cloned, results in (a).</li></ul>
|
||||
|
||||
<p>Even if you never publish your package, you can still get a lot of
|
||||
benefits of using npm if you just want to write a node program (a), and
|
||||
|
@ -56,9 +56,9 @@ least, you need:</p>
|
|||
<ul><li><p>name:
|
||||
This should be a string that identifies your project. Please do not
|
||||
use the name to specify that it runs on node, or is in JavaScript.
|
||||
You can use the "engines" field to explicitly state the versions of
|
||||
node (or whatever else) that your program requires, and it's pretty
|
||||
well assumed that it's javascript.</p><p>It does not necessarily need to match your github repository name.</p><p>So, <code>node-foo</code> and <code>bar-js</code> are bad names. <code>foo</code> or <code>bar</code> are better.</p></li><li><p>version:
|
||||
You can use the "engines" field to explicitly state the versions of
|
||||
node (or whatever else) that your program requires, and it's pretty
|
||||
well assumed that it's javascript.</p><p>It does not necessarily need to match your github repository name.</p><p>So, <code>node-foo</code> and <code>bar-js</code> are bad names. <code>foo</code> or <code>bar</code> are better.</p></li><li><p>version:
|
||||
A semver-compatible version.</p></li><li><p>engines:
|
||||
Specify the versions of node (or whatever else) that your program
|
||||
runs on. The node API changes a lot, and there may be bugs or new
|
||||
|
@ -66,22 +66,22 @@ functionality that you depend on. Be explicit.</p></li><li><p>author:
|
|||
Take some credit.</p></li><li><p>scripts:
|
||||
If you have a special compilation or installation script, then you
|
||||
should put it in the <code>scripts</code> hash. You should definitely have at
|
||||
least a basic smoke-test command as the "scripts.test" field.
|
||||
least a basic smoke-test command as the "scripts.test" field.
|
||||
See <a href="../doc/scripts.html">scripts(1)</a>.</p></li><li><p>main:
|
||||
If you have a single module that serves as the entry point to your
|
||||
program (like what the "foo" package gives you at require("foo")),
|
||||
then you need to specify that in the "main" field.</p></li><li><p>directories:
|
||||
This is a hash of folders. The best ones to include are "lib" and
|
||||
"doc", but if you specify a folder full of man pages in "man", then
|
||||
they'll get installed just like these ones.</p></li></ul>
|
||||
program (like what the "foo" package gives you at require("foo")),
|
||||
then you need to specify that in the "main" field.</p></li><li><p>directories:
|
||||
This is a hash of folders. The best ones to include are "lib" and
|
||||
"doc", but if you specify a folder full of man pages in "man", then
|
||||
they'll get installed just like these ones.</p></li></ul>
|
||||
|
||||
<p>You can use <code>npm init</code> in the root of your package in order to get you
|
||||
started with a pretty basic package.json file. See <code><a href="../doc/init.html">init(1)</a></code> for
|
||||
more info.</p>
|
||||
|
||||
<h2 id="Keeping-files-out-of-your-package">Keeping files *out* of your package</h2>
|
||||
<h2 id="Keeping-files-out-of-your-package">Keeping files <em>out</em> of your package</h2>
|
||||
|
||||
<p>Use a <code>.npmignore</code> file to keep stuff out of your package. If there's
|
||||
<p>Use a <code>.npmignore</code> file to keep stuff out of your package. If there's
|
||||
no .npmignore file, but there <em>is</em> a .gitignore file, then npm will
|
||||
ignore the stuff matched by the .gitignore file. If you <em>want</em> to
|
||||
include something that is excluded by your .gitignore file, you can
|
||||
|
@ -100,21 +100,21 @@ of course.)</p>
|
|||
|
||||
<p><strong>This is important.</strong></p>
|
||||
|
||||
<p>If you can not install it locally, you'll have
|
||||
problems trying to publish it. Or, worse yet, you'll be able to
|
||||
publish it, but you'll be publishing a broken or pointless package.
|
||||
So don't do that.</p>
|
||||
<p>If you can not install it locally, you'll have
|
||||
problems trying to publish it. Or, worse yet, you'll be able to
|
||||
publish it, but you'll be publishing a broken or pointless package.
|
||||
So don't do that.</p>
|
||||
|
||||
<p>In the root of your package, do this:</p>
|
||||
|
||||
<pre><code>npm install . -g</code></pre>
|
||||
|
||||
<p>That'll show you that it's working. If you'd rather just create a symlink
|
||||
<p>That'll show you that it's working. If you'd rather just create a symlink
|
||||
package that points to your working directory, then do this:</p>
|
||||
|
||||
<pre><code>npm link</code></pre>
|
||||
|
||||
<p>Use <code>npm ls -g</code> to see if it's there.</p>
|
||||
<p>Use <code>npm ls -g</code> to see if it's there.</p>
|
||||
|
||||
<p>To test a local install, go into some other folder, and then do:</p>
|
||||
|
||||
|
@ -123,8 +123,8 @@ npm install ../my-package</code></pre>
|
|||
|
||||
<p>to install it locally into the node_modules folder in that other place.</p>
|
||||
|
||||
<p>Then go into the node-repl, and try using require("my-thing") to
|
||||
bring in your module's main module.</p>
|
||||
<p>Then go into the node-repl, and try using require("my-thing") to
|
||||
bring in your module's main module.</p>
|
||||
|
||||
<h2 id="Create-a-User-Account">Create a User Account</h2>
|
||||
|
||||
|
@ -138,7 +138,7 @@ bring in your module's main module.</p>
|
|||
|
||||
<h2 id="Publish-your-package">Publish your package</h2>
|
||||
|
||||
<p>This part's easy. IN the root of your folder, do this:</p>
|
||||
<p>This part's easy. IN the root of your folder, do this:</p>
|
||||
|
||||
<pre><code>npm publish</code></pre>
|
||||
|
||||
|
@ -160,7 +160,7 @@ from a fresh checkout.</p>
|
|||
|
||||
<ul><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">developers — npm@1.1.46</p>
|
||||
<p id="footer">developers — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
||||
|
||||
<ol><li>Get the author email with <code>npm owner ls <pkgname></code></li><li>Email the author, CC <a href="mailto:i@izs.me">i@izs.me</a>.</li><li>After a few weeks, if there's no resolution, we'll sort it out.</li></ol>
|
||||
<ol><li>Get the author email with <code>npm owner ls <pkgname></code></li><li>Email the author, CC <a href="mailto:i@izs.me">i@izs.me</a>.</li><li>After a few weeks, if there's no resolution, we'll sort it out.</li></ol>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
|
@ -19,14 +19,14 @@ later, some other user wants to use that name. Here are some common
|
|||
ways that happens (each of these is based on actual events.)</p>
|
||||
|
||||
<ol><li>Bob writes a JavaScript module <code>foo</code>, which is not node-specific.
|
||||
Bob doesn't use node at all. Joe wants to use <code>foo</code> in node, so he
|
||||
Bob doesn't use node at all. Joe wants to use <code>foo</code> in node, so he
|
||||
wraps it in an npm module. Some time later, Bob starts using node,
|
||||
and wants to take over management of his program.</li><li>Bob writes an npm module <code>foo</code>, and publishes it. Perhaps much
|
||||
later, Joe finds a bug in <code>foo</code>, and fixes it. He sends a pull
|
||||
request to Bob, but Bob doesn't have the time to deal with it,
|
||||
request to Bob, but Bob doesn't have the time to deal with it,
|
||||
because he has a new job and a new baby and is focused on his new
|
||||
erlang project, and kind of not involved with node any more. Joe
|
||||
would like to publish a new <code>foo</code>, but can't, because the name is
|
||||
would like to publish a new <code>foo</code>, but can't, because the name is
|
||||
taken.</li><li>Bob writes a 10-line flow-control library, and calls it <code>foo</code>, and
|
||||
publishes it to the npm registry. Being a simple little thing, it
|
||||
never really has to be updated. Joe works for Foo Inc, the makers
|
||||
|
@ -35,10 +35,10 @@ toolkit framework. They publish it to npm as <code>foojs</code>, but people are
|
|||
routinely confused when <code>npm install foo</code> is some different thing.</li><li>Bob writes a parser for the widely-known <code>foo</code> file format, because
|
||||
he needs it for work. Then, he gets a new job, and never updates the
|
||||
prototype. Later on, Joe writes a much more complete <code>foo</code> parser,
|
||||
but can't publish, because Bob's <code>foo</code> is in the way.</li></ol>
|
||||
but can't publish, because Bob's <code>foo</code> is in the way.</li></ol>
|
||||
|
||||
<p>The validity of Joe's claim in each situation can be debated. However,
|
||||
Joe's appropriate course of action in each case is the same.</p>
|
||||
<p>The validity of Joe's claim in each situation can be debated. However,
|
||||
Joe's appropriate course of action in each case is the same.</p>
|
||||
|
||||
<ol><li><code>npm owner ls foo</code>. This will tell Joe the email address of the
|
||||
owner (Bob).</li><li>Joe emails Bob, explaining the situation <strong>as respecfully as possible</strong>,
|
||||
|
@ -46,15 +46,15 @@ and what he would like to do with the module name. He adds
|
|||
isaacs <a href="mailto:i@izs.me">i@izs.me</a> to the CC list of the email. Mention in the email
|
||||
that Bob can run <code>npm owner add joe foo</code> to add Joe as an owner of
|
||||
the <code>foo</code> package.</li><li>After a reasonable amount of time, if Bob has not responded, or if
|
||||
Bob and Joe can't come to any sort of resolution, email isaacs
|
||||
<a href="mailto:i@izs.me">i@izs.me</a> and we'll sort it out.</li></ol>
|
||||
Bob and Joe can't come to any sort of resolution, email isaacs
|
||||
<a href="mailto:i@izs.me">i@izs.me</a> and we'll sort it out.</li></ol>
|
||||
|
||||
<h2 id="REASONING">REASONING</h2>
|
||||
|
||||
<p>In almost every case so far, the parties involved have been able to reach
|
||||
an amicable resolution without any major intervention. Most people
|
||||
really do want to be reasonable, and are probably not even aware that
|
||||
they're in your way.</p>
|
||||
they're in your way.</p>
|
||||
|
||||
<p>Module ecosystems are most vibrant and powerful when they are as
|
||||
self-directed as possible. If an admin one day deletes something you
|
||||
|
@ -80,7 +80,7 @@ license statement)</li><li>Illegal content.</li></ol>
|
|||
|
||||
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">disputes — npm@1.1.46</p>
|
||||
<p id="footer">disputes — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -15,7 +15,7 @@ npm home <pkgname></code></pre>
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This command tries to guess at the likely location of a package's
|
||||
<p>This command tries to guess at the likely location of a package's
|
||||
documentation URL, and then tries to open it using the <code>--browser</code>
|
||||
config param.</p>
|
||||
|
||||
|
@ -23,7 +23,7 @@ config param.</p>
|
|||
|
||||
<h3 id="browser">browser</h3>
|
||||
|
||||
<ul><li>Default: OS X: <code>"open"</code>, others: <code>"google-chrome"</code></li><li>Type: String</li></ul>
|
||||
<ul><li>Default: OS X: <code>"open"</code>, others: <code>"google-chrome"</code></li><li>Type: String</li></ul>
|
||||
|
||||
<p>The browser that is called by the <code>npm docs</code> command to open websites.</p>
|
||||
|
||||
|
@ -37,7 +37,7 @@ config param.</p>
|
|||
|
||||
<ul><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">docs — npm@1.1.46</p>
|
||||
<p id="footer">docs — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>Opens the package folder in the default editor (or whatever you've
|
||||
<p>Opens the package folder in the default editor (or whatever you've
|
||||
configured as the npm <code>editor</code> config -- see <code><a href="../doc/config.html">config(1)</a></code>.)</p>
|
||||
|
||||
<p>After it has been edited, the package is rebuilt so as to pick up any
|
||||
|
@ -28,8 +28,8 @@ changes to your locally installed copy.</p>
|
|||
|
||||
<h3 id="editor">editor</h3>
|
||||
|
||||
<ul><li>Default: <code>EDITOR</code> environment variable if set, or <code>"vi"</code> on Posix,
|
||||
or <code>"notepad"</code> on Windows.</li><li>Type: path</li></ul>
|
||||
<ul><li>Default: <code>EDITOR</code> environment variable if set, or <code>"vi"</code> on Posix,
|
||||
or <code>"notepad"</code> on Windows.</li><li>Type: path</li></ul>
|
||||
|
||||
<p>The command to run for <code>npm edit</code> or <code>npm config edit</code>.</p>
|
||||
|
||||
|
@ -37,7 +37,7 @@ or <code>"notepad"</code> on Windows.</li><li>Type: path</li></ul>
|
|||
|
||||
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/explore.html">explore(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">edit — npm@1.1.46</p>
|
||||
<p id="footer">edit — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -31,7 +31,7 @@ sure to use <code>npm rebuild <pkg></code> if you make any changes.</p>
|
|||
|
||||
<h3 id="shell">shell</h3>
|
||||
|
||||
<ul><li>Default: SHELL environment variable, or "bash" on Posix, or "cmd" on
|
||||
<ul><li>Default: SHELL environment variable, or "bash" on Posix, or "cmd" on
|
||||
Windows</li><li>Type: path</li></ul>
|
||||
|
||||
<p>The shell to run for the <code>npm explore</code> command.</p>
|
||||
|
@ -40,7 +40,7 @@ Windows</li><li>Type: path</li></ul>
|
|||
|
||||
<ul><li><a href="../doc/submodule.html">submodule(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/edit.html">edit(1)</a></li><li><a href="../doc/rebuild.html">rebuild(1)</a></li><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">explore — npm@1.1.46</p>
|
||||
<p id="footer">explore — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -16,15 +16,15 @@
|
|||
|
||||
<p>to open these documents in your default web browser rather than <code>man</code>.</p>
|
||||
|
||||
<h2 id="It-didn-t-work">It didn't work.</h2>
|
||||
<h2 id="It-didn-t-work">It didn't work.</h2>
|
||||
|
||||
<p>That's not really a question.</p>
|
||||
<p>That's not really a question.</p>
|
||||
|
||||
<h2 id="Why-didn-t-it-work">Why didn't it work?</h2>
|
||||
<h2 id="Why-didn-t-it-work">Why didn't it work?</h2>
|
||||
|
||||
<p>I don't know yet.</p>
|
||||
<p>I don't know yet.</p>
|
||||
|
||||
<p>Read the error output, and if you can't figure out what it means,
|
||||
<p>Read the error output, and if you can't figure out what it means,
|
||||
do what it says and post a bug with all the information it asks for.</p>
|
||||
|
||||
<h2 id="Where-does-npm-put-stuff">Where does npm put stuff?</h2>
|
||||
|
@ -44,22 +44,22 @@ and its modules go in <code>npm root -g</code>.</li></ul>
|
|||
is especially important for command line utilities that need to add
|
||||
their bins to the global system <code>PATH</code>.)</p>
|
||||
|
||||
<h2 id="I-installed-something-globally-but-I-can-t-require-it">I installed something globally, but I can't `require()` it</h2>
|
||||
<h2 id="I-installed-something-globally-but-I-can-t-require-it">I installed something globally, but I can't <code>require()</code> it</h2>
|
||||
|
||||
<p>Install it locally.</p>
|
||||
|
||||
<p>The global install location is a place for command-line utilities
|
||||
to put their bins in the system <code>PATH</code>. It's not for use with <code>require()</code>.</p>
|
||||
to put their bins in the system <code>PATH</code>. It's not for use with <code>require()</code>.</p>
|
||||
|
||||
<p>If you <code>require()</code> a module in your code, then that means it's a
|
||||
<p>If you <code>require()</code> a module in your code, then that means it's a
|
||||
dependency, and a part of your program. You need to install it locally
|
||||
in your program.</p>
|
||||
|
||||
<h2 id="Why-can-t-npm-just-put-everything-in-one-place-like-other-package-managers">Why can't npm just put everything in one place, like other package managers?</h2>
|
||||
<h2 id="Why-can-t-npm-just-put-everything-in-one-place-like-other-package-managers">Why can't npm just put everything in one place, like other package managers?</h2>
|
||||
|
||||
<p>Not every change is an improvement, but every improvement is a change.
|
||||
This would be like asking git to do network IO for every commit. It's
|
||||
not going to happen, because it's a terrible idea that causes more
|
||||
This would be like asking git to do network IO for every commit. It's
|
||||
not going to happen, because it's a terrible idea that causes more
|
||||
problems than it solves.</p>
|
||||
|
||||
<p>It is much harder to avoid dependency conflicts without nesting
|
||||
|
@ -69,16 +69,16 @@ more details.</p>
|
|||
|
||||
<p>If you want a package to be installed in one place, and have all your
|
||||
programs reference the same copy of it, then use the <code>npm link</code> command.
|
||||
That's what it's for. Install it globally, then link it into each
|
||||
That's what it's for. Install it globally, then link it into each
|
||||
program that uses it.</p>
|
||||
|
||||
<h2 id="Whatever-I-really-want-the-old-style-everything-global-style">Whatever, I really want the old style 'everything global' style.</h2>
|
||||
<h2 id="Whatever-I-really-want-the-old-style-everything-global-style">Whatever, I really want the old style 'everything global' style.</h2>
|
||||
|
||||
<p>Write your own package manager, then. It's not that hard.</p>
|
||||
<p>Write your own package manager, then. It's not that hard.</p>
|
||||
|
||||
<p>npm will not help you do something that is known to be a bad idea.</p>
|
||||
|
||||
<h2 id="Should-I-check-my-node_modules-folder-into-git">Should I check my `node_modules` folder into git?</h2>
|
||||
<h2 id="Should-I-check-my-node_modules-folder-into-git">Should I check my <code>node_modules</code> folder into git?</h2>
|
||||
|
||||
<p>Mikeal Rogers answered this question very well:</p>
|
||||
|
||||
|
@ -91,33 +91,33 @@ websites and apps.</li><li>Do not check <code>node_modules</code> into git for l
|
|||
intended to be reused.</li><li>Use npm to manage dependencies in your dev environment, but not in
|
||||
your deployment scripts.</li></ul>
|
||||
|
||||
<h2 id="Is-it-npm-or-NPM-or-Npm">Is it 'npm' or 'NPM' or 'Npm'?</h2>
|
||||
<h2 id="Is-it-npm-or-NPM-or-Npm">Is it 'npm' or 'NPM' or 'Npm'?</h2>
|
||||
|
||||
<p>npm should never be capitalized unless it is being displayed in a
|
||||
location that is customarily all-caps (such as the title of man pages.)</p>
|
||||
|
||||
<h2 id="If-npm-is-an-acronym-why-is-it-never-capitalized">If 'npm' is an acronym, why is it never capitalized?</h2>
|
||||
<h2 id="If-npm-is-an-acronym-why-is-it-never-capitalized">If 'npm' is an acronym, why is it never capitalized?</h2>
|
||||
|
||||
<p>Contrary to the belief of many, "npm" is not in fact an abbreviation for
|
||||
"Node Package Manager". It is a recursive bacronymic abbreviation for
|
||||
"npm is not an acronym". (If it was "ninaa", then it would be an
|
||||
<p>Contrary to the belief of many, "npm" is not in fact an abbreviation for
|
||||
"Node Package Manager". It is a recursive bacronymic abbreviation for
|
||||
"npm is not an acronym". (If it was "ninaa", then it would be an
|
||||
acronym, and thus incorrectly named.)</p>
|
||||
|
||||
<p>"NPM", however, <em>is</em> an acronym (more precisely, a capitonym) for the
|
||||
<p>"NPM", however, <em>is</em> an acronym (more precisely, a capitonym) for the
|
||||
National Association of Pastoral Musicians. You can learn more
|
||||
about them at <a href="http://npm.org/">http://npm.org/</a>.</p>
|
||||
|
||||
<p>In software, "NPM" is a Non-Parametric Mapping utility written by
|
||||
<p>In software, "NPM" is a Non-Parametric Mapping utility written by
|
||||
Chris Rorden. You can analyze pictures of brains with it. Learn more
|
||||
about the (capitalized) NPM program at <a href="http://www.cabiatl.com/mricro/npm/">http://www.cabiatl.com/mricro/npm/</a>.</p>
|
||||
|
||||
<p>The first seed that eventually grew into this flower was a bash utility
|
||||
named "pm", which was a shortened descendent of "pkgmakeinst", a
|
||||
named "pm", which was a shortened descendent of "pkgmakeinst", a
|
||||
bash function that was used to install various different things on different
|
||||
platforms, most often using Yahoo's <code>yinst</code>. If <code>npm</code> was ever an
|
||||
platforms, most often using Yahoo's <code>yinst</code>. If <code>npm</code> was ever an
|
||||
acronym for anything, it was <code>node pm</code> or maybe <code>new pm</code>.</p>
|
||||
|
||||
<p>So, in all seriousness, the "npm" project is named after its command-line
|
||||
<p>So, in all seriousness, the "npm" project is named after its command-line
|
||||
utility, which was organically selected to be easily typed by a right-handed
|
||||
programmer using a US QWERTY keyboard layout, ending with the
|
||||
right-ring-finger in a postition to type the <code>-</code> key for flags and
|
||||
|
@ -150,11 +150,11 @@ command.)</p>
|
|||
|
||||
<pre><code>curl http://npmjs.org/install.sh | sh</code></pre>
|
||||
|
||||
<h2 id="What-is-a-package">What is a `package`?</h2>
|
||||
<h2 id="What-is-a-package">What is a <code>package</code>?</h2>
|
||||
|
||||
<p>A package is:</p>
|
||||
|
||||
<ul><li>a) a folder containing a program described by a package.json file</li><li>b) a gzipped tarball containing (a)</li><li>c) a url that resolves to (b)</li><li>d) a <code><name>@<version></code> that is published on the registry with (c)</li><li>e) a <code><name>@<tag></code> that points to (d)</li><li>f) a <code><name></code> that has a "latest" tag satisfying (e)</li><li>g) a <code>git</code> url that, when cloned, results in (a).</li></ul>
|
||||
<ul><li>a) a folder containing a program described by a package.json file</li><li>b) a gzipped tarball containing (a)</li><li>c) a url that resolves to (b)</li><li>d) a <code><name>@<version></code> that is published on the registry with (c)</li><li>e) a <code><name>@<tag></code> that points to (d)</li><li>f) a <code><name></code> that has a "latest" tag satisfying (e)</li><li>g) a <code>git</code> url that, when cloned, results in (a).</li></ul>
|
||||
|
||||
<p>Even if you never publish your package, you can still get a lot of
|
||||
benefits of using npm if you just want to write a node program (a), and
|
||||
|
@ -173,7 +173,7 @@ an argument to <code>git checkout</code>. The default is <code>master</code>.</
|
|||
|
||||
<h2 id="How-do-I-install-node-with-npm">How do I install node with npm?</h2>
|
||||
|
||||
<p>You don't. Try one of these:</p>
|
||||
<p>You don't. Try one of these:</p>
|
||||
|
||||
<ul><li><a href="http://github.com/isaacs/nave">http://github.com/isaacs/nave</a></li><li><a href="http://github.com/visionmedia/n">http://github.com/visionmedia/n</a></li><li><a href="http://github.com/creationix/nvm">http://github.com/creationix/nvm</a></li></ul>
|
||||
|
||||
|
@ -181,7 +181,7 @@ an argument to <code>git checkout</code>. The default is <code>master</code>.</
|
|||
|
||||
<p>See <code><a href="../doc/developers.html">developers(1)</a></code> and <code><a href="../doc/json.html">json(1)</a></code>.</p>
|
||||
|
||||
<p>You'll most likely want to <code>npm link</code> your development folder. That's
|
||||
<p>You'll most likely want to <code>npm link</code> your development folder. That's
|
||||
awesomely handy.</p>
|
||||
|
||||
<p>To set up your own private registry, check out <code><a href="../doc/registry.html">registry(1)</a></code>.</p>
|
||||
|
@ -190,9 +190,9 @@ awesomely handy.</p>
|
|||
|
||||
<p>Yes. It should be a url to a gzipped tarball containing a single folder
|
||||
that has a package.json in its root, or a git url.
|
||||
(See "what is a package?" above.)</p>
|
||||
(See "what is a package?" above.)</p>
|
||||
|
||||
<h2 id="How-do-I-symlink-to-a-dev-folder-so-I-don-t-have-to-keep-re-installing">How do I symlink to a dev folder so I don't have to keep re-installing?</h2>
|
||||
<h2 id="How-do-I-symlink-to-a-dev-folder-so-I-don-t-have-to-keep-re-installing">How do I symlink to a dev folder so I don't have to keep re-installing?</h2>
|
||||
|
||||
<p>See <code><a href="../doc/link.html">link(1)</a></code></p>
|
||||
|
||||
|
@ -200,18 +200,18 @@ that has a package.json in its root, or a git url.
|
|||
|
||||
<p>See <code><a href="../doc/registry.html">registry(1)</a></code>.</p>
|
||||
|
||||
<h2 id="What-s-up-with-the-insecure-channel-warnings">What's up with the insecure channel warnings?</h2>
|
||||
<h2 id="What-s-up-with-the-insecure-channel-warnings">What's up with the insecure channel warnings?</h2>
|
||||
|
||||
<p>Until node 0.4.10, there were problems sending big files over HTTPS. That
|
||||
means that publishes go over HTTP by default in those versions of node.</p>
|
||||
|
||||
<h2 id="I-forgot-my-password-and-can-t-publish-How-do-I-reset-it">I forgot my password, and can't publish. How do I reset it?</h2>
|
||||
<h2 id="I-forgot-my-password-and-can-t-publish-How-do-I-reset-it">I forgot my password, and can't publish. How do I reset it?</h2>
|
||||
|
||||
<p>Go to <a href="http://admin.npmjs.org/reset">http://admin.npmjs.org/reset</a>.</p>
|
||||
|
||||
<h2 id="I-get-ECONNREFUSED-a-lot-What-s-up">I get ECONNREFUSED a lot. What's up?</h2>
|
||||
<h2 id="I-get-ECONNREFUSED-a-lot-What-s-up">I get ECONNREFUSED a lot. What's up?</h2>
|
||||
|
||||
<p>Either the registry is down, or node's DNS isn't able to reach out.</p>
|
||||
<p>Either the registry is down, or node's DNS isn't able to reach out.</p>
|
||||
|
||||
<p>To check if the registry is down, open up
|
||||
<a href="http://registry.npmjs.org/">http://registry.npmjs.org/</a>
|
||||
|
@ -219,7 +219,7 @@ in a web browser. This will also tell you if you are just unable to
|
|||
access the internet for some reason.</p>
|
||||
|
||||
<p>If the registry IS down, let me know by emailing or posting an issue.
|
||||
We'll have someone kick it or something.</p>
|
||||
We'll have someone kick it or something.</p>
|
||||
|
||||
<h2 id="Who-does-npm">Who does npm?</h2>
|
||||
|
||||
|
@ -241,7 +241,7 @@ We'll have someone kick it or something.</p>
|
|||
|
||||
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">faq — npm@1.1.46</p>
|
||||
<p id="footer">faq — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>npm puts various things on your computer. That's its job.</p>
|
||||
<p>npm puts various things on your computer. That's its job.</p>
|
||||
|
||||
<p>This document will tell you what it puts where.</p>
|
||||
|
||||
|
@ -18,16 +18,16 @@
|
|||
|
||||
<ul><li>Local install (default): puts stuff in <code>./node_modules</code> of the current
|
||||
package root.</li><li>Global install (with <code>-g</code>): puts stuff in /usr/local or wherever node
|
||||
is installed.</li><li>Install it <strong>locally</strong> if you're going to <code>require()</code> it.</li><li>Install it <strong>globally</strong> if you're going to run it on the command line.</li><li>If you need both, then install it in both places, or use <code>npm link</code>.</li></ul>
|
||||
is installed.</li><li>Install it <strong>locally</strong> if you're going to <code>require()</code> it.</li><li>Install it <strong>globally</strong> if you're going to run it on the command line.</li><li>If you need both, then install it in both places, or use <code>npm link</code>.</li></ul>
|
||||
|
||||
<h3 id="prefix-Configuration">prefix Configuration</h3>
|
||||
|
||||
<p>The <code>prefix</code> config defaults to the location where node is installed.
|
||||
On most systems, this is <code>/usr/local</code>, and most of the time is the same
|
||||
as node's <code>process.installPrefix</code>.</p>
|
||||
as node's <code>process.installPrefix</code>.</p>
|
||||
|
||||
<p>On windows, this is the exact location of the node.exe binary. On Unix
|
||||
systems, it's one level up, since node is typically installed at
|
||||
systems, it's one level up, since node is typically installed at
|
||||
<code>{prefix}/bin/node</code> rather than <code>{prefix}/node.exe</code>.</p>
|
||||
|
||||
<p>When the <code>global</code> flag is set, npm installs things into this prefix.
|
||||
|
@ -38,8 +38,8 @@ current working directory if not in a package already.</p>
|
|||
|
||||
<p>Packages are dropped into the <code>node_modules</code> folder under the <code>prefix</code>.
|
||||
When installing locally, this means that you can
|
||||
<code>require("packagename")</code> to load its main module, or
|
||||
<code>require("packagename/lib/path/to/sub/module")</code> to load other modules.</p>
|
||||
<code>require("packagename")</code> to load its main module, or
|
||||
<code>require("packagename/lib/path/to/sub/module")</code> to load other modules.</p>
|
||||
|
||||
<p>Global installs on Unix systems go to <code>{prefix}/lib/node_modules</code>.
|
||||
Global installs on Windows go to <code>{prefix}/node_modules</code> (that is, no
|
||||
|
@ -91,15 +91,15 @@ into some other folder.</p>
|
|||
<p>Starting at the $PWD, npm will walk up the folder tree checking for a
|
||||
folder that contains either a <code>package.json</code> file, or a <code>node_modules</code>
|
||||
folder. If such a thing is found, then that is treated as the effective
|
||||
"current directory" for the purpose of running npm commands. (This
|
||||
behavior is inspired by and similar to git's .git-folder seeking
|
||||
"current directory" for the purpose of running npm commands. (This
|
||||
behavior is inspired by and similar to git's .git-folder seeking
|
||||
logic when running git commands in a working dir.)</p>
|
||||
|
||||
<p>If no package root is found, then the current folder is used.</p>
|
||||
|
||||
<p>When you run <code>npm install foo@1.2.3</code>, then the package is loaded into
|
||||
the cache, and then unpacked into <code>./node_modules/foo</code>. Then, any of
|
||||
foo's dependencies are similarly unpacked into
|
||||
foo's dependencies are similarly unpacked into
|
||||
<code>./node_modules/foo/node_modules/...</code>.</p>
|
||||
|
||||
<p>Any bin files are symlinked to <code>./node_modules/.bin/</code>, so that they may
|
||||
|
@ -108,35 +108,35 @@ be found by npm scripts when necessary.</p>
|
|||
<h3 id="Global-Installation">Global Installation</h3>
|
||||
|
||||
<p>If the <code>global</code> configuration is set to true, then npm will
|
||||
install packages "globally".</p>
|
||||
install packages "globally".</p>
|
||||
|
||||
<p>For global installation, packages are installed roughly the same way,
|
||||
but using the folders described above.</p>
|
||||
|
||||
<h3 id="Cycles-Conflicts-and-Folder-Parsimony">Cycles, Conflicts, and Folder Parsimony</h3>
|
||||
|
||||
<p>Cycles are handled using the property of node's module system that it
|
||||
<p>Cycles are handled using the property of node's module system that it
|
||||
walks up the directories looking for <code>node_modules</code> folders. So, at every
|
||||
stage, if a package is already installed in an ancestor <code>node_modules</code>
|
||||
folder, then it is not installed at the current location.</p>
|
||||
|
||||
<p>Consider the case above, where <code>foo -> bar -> baz</code>. Imagine if, in
|
||||
addition to that, baz depended on bar, so you'd have:
|
||||
addition to that, baz depended on bar, so you'd have:
|
||||
<code>foo -> bar -> baz -> bar -> baz ...</code>. However, since the folder
|
||||
structure is: <code>foo/node_modules/bar/node_modules/baz</code>, there's no need to
|
||||
structure is: <code>foo/node_modules/bar/node_modules/baz</code>, there's no need to
|
||||
put another copy of bar into <code>.../baz/node_modules</code>, since when it calls
|
||||
require("bar"), it will get the copy that is installed in
|
||||
require("bar"), it will get the copy that is installed in
|
||||
<code>foo/node_modules/bar</code>.</p>
|
||||
|
||||
<p>This shortcut is only used if the exact same
|
||||
version would be installed in multiple nested <code>node_modules</code> folders. It
|
||||
is still possible to have <code>a/node_modules/b/node_modules/a</code> if the two
|
||||
"a" packages are different versions. However, without repeating the
|
||||
"a" packages are different versions. However, without repeating the
|
||||
exact same package multiple times, an infinite regress will always be
|
||||
prevented.</p>
|
||||
|
||||
<p>Another optimization can be made by installing dependencies at the
|
||||
highest level possible, below the localized "target" folder.</p>
|
||||
highest level possible, below the localized "target" folder.</p>
|
||||
|
||||
<h4 id="Example">Example</h4>
|
||||
|
||||
|
@ -170,23 +170,23 @@ highest level possible, below the localized "target" folder.</p>
|
|||
`-- quux (3.2.0) <---[E]</code></pre>
|
||||
|
||||
<p>Since foo depends directly on bar@1.2.3 and baz@1.2.3, those are
|
||||
installed in foo's <code>node_modules</code> folder.</p>
|
||||
installed in foo's <code>node_modules</code> folder.</p>
|
||||
|
||||
<p>Even though the latest copy of blerg is 1.3.7, foo has a specific
|
||||
dependency on version 1.2.5. So, that gets installed at [A]. Since the
|
||||
parent installation of blerg satisfie's bar's dependency on blerg@1.x,
|
||||
parent installation of blerg satisfie's bar's dependency on blerg@1.x,
|
||||
it does not install another copy under [B].</p>
|
||||
|
||||
<p>Bar [B] also has dependencies on baz and asdf, so those are installed in
|
||||
bar's <code>node_modules</code> folder. Because it depends on <code>baz@2.x</code>, it cannot
|
||||
bar's <code>node_modules</code> folder. Because it depends on <code>baz@2.x</code>, it cannot
|
||||
re-use the <code>baz@1.2.3</code> installed in the parent <code>node_modules</code> folder [D],
|
||||
and must install its own copy [C].</p>
|
||||
|
||||
<p>Underneath bar, the <code>baz->quux->bar</code> dependency creates a cycle.
|
||||
However, because <code>bar</code> is already in <code>quux</code>'s ancestry [B], it does not
|
||||
However, because <code>bar</code> is already in <code>quux</code>'s ancestry [B], it does not
|
||||
unpack another copy of bar into that folder.</p>
|
||||
|
||||
<p>Underneath <code>foo->baz</code> [D], quux's [E] folder tree is empty, because its
|
||||
<p>Underneath <code>foo->baz</code> [D], quux's [E] folder tree is empty, because its
|
||||
dependency on bar is satisfied by the parent folder copy installed at [B].</p>
|
||||
|
||||
<p>For a graphical breakdown of what is installed where, use <code>npm ls</code>.</p>
|
||||
|
@ -205,7 +205,7 @@ cannot be found elsewhere. See <code><a href="../doc/json.html">json(1)</a></co
|
|||
|
||||
<ul><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/pack.html">pack(1)</a></li><li><a href="../doc/cache.html">cache(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">folders — npm@1.1.46</p>
|
||||
<p id="footer">folders — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -29,7 +29,7 @@ command directly.</p>
|
|||
|
||||
<ul><li>Type: Boolean</li><li>Default false</li></ul>
|
||||
|
||||
<p>If true, the "long" flag will cause help-search to output context around
|
||||
<p>If true, the "long" flag will cause help-search to output context around
|
||||
where the terms were found in the documentation.</p>
|
||||
|
||||
<p>If false, then help-search will just list out the help topics found.</p>
|
||||
|
@ -38,7 +38,7 @@ where the terms were found in the documentation.</p>
|
|||
|
||||
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/help.html">help(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">help-search — npm@1.1.46</p>
|
||||
<p id="footer">help-search — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -26,17 +26,17 @@ matches are equivalent to specifying a topic name.</p>
|
|||
|
||||
<h3 id="viewer">viewer</h3>
|
||||
|
||||
<ul><li>Default: "man" on Posix, "browser" on Windows</li><li>Type: path</li></ul>
|
||||
<ul><li>Default: "man" on Posix, "browser" on Windows</li><li>Type: path</li></ul>
|
||||
|
||||
<p>The program to use to view help content.</p>
|
||||
|
||||
<p>Set to <code>"browser"</code> to view html help content in the default web browser.</p>
|
||||
<p>Set to <code>"browser"</code> to view html help content in the default web browser.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../doc/npm.html">npm(1)</a></li><li><a href="../doc/README.html">README</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/help-search.html">help-search(1)</a></li><li><a href="../doc/index.html">index(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">help — npm@1.1.46</p>
|
||||
<p id="footer">help — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
|
||||
<h2 id="npm-coding-style-1"><a href="../doc/coding-style.html">coding-style(1)</a></h2>
|
||||
|
||||
<p> npm's "funny" coding style</p>
|
||||
<p> npm's "funny" coding style</p>
|
||||
|
||||
<h2 id="npm-completion-1"><a href="../doc/completion.html">completion(1)</a></h2>
|
||||
|
||||
|
@ -104,7 +104,7 @@
|
|||
|
||||
<h2 id="npm-json-1"><a href="../doc/json.html">json(1)</a></h2>
|
||||
|
||||
<p> Specifics of npm's package.json handling</p>
|
||||
<p> Specifics of npm's package.json handling</p>
|
||||
|
||||
<h2 id="npm-link-1"><a href="../doc/link.html">link(1)</a></h2>
|
||||
|
||||
|
@ -168,7 +168,7 @@
|
|||
|
||||
<h2 id="npm-scripts-1"><a href="../doc/scripts.html">scripts(1)</a></h2>
|
||||
|
||||
<p> How npm handles the "scripts" field</p>
|
||||
<p> How npm handles the "scripts" field</p>
|
||||
|
||||
<h2 id="npm-search-1"><a href="../doc/search.html">search(1)</a></h2>
|
||||
|
||||
|
@ -384,7 +384,7 @@
|
|||
|
||||
<p> Display npm username</p>
|
||||
</div>
|
||||
<p id="footer">index — npm@1.1.46</p>
|
||||
<p id="footer">index — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -17,9 +17,9 @@
|
|||
<p>This will ask you a bunch of questions, and then write a package.json for you.</p>
|
||||
|
||||
<p>It attempts to make reasonable guesses about what you want things to be set to,
|
||||
and then writes a package.json file with the options you've selected.</p>
|
||||
and then writes a package.json file with the options you've selected.</p>
|
||||
|
||||
<p>If you already have a package.json file, it'll read that first, and default to
|
||||
<p>If you already have a package.json file, it'll read that first, and default to
|
||||
the options in there.</p>
|
||||
|
||||
<p>It is strictly additive, so it does not delete options from your package.json
|
||||
|
@ -29,7 +29,7 @@ without a really good reason to do so.</p>
|
|||
|
||||
<ul><li><a href="https://github.com/isaacs/init-package-json">https://github.com/isaacs/init-package-json</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/version.html">version(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">init — npm@1.1.46</p>
|
||||
<p id="footer">init — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -28,7 +28,7 @@ by that. See <a href="../doc/shrinkwrap.html">shrinkwrap(1)</a>.</p>
|
|||
|
||||
<p>A <code>package</code> is:</p>
|
||||
|
||||
<ul><li>a) a folder containing a program described by a package.json file</li><li>b) a gzipped tarball containing (a)</li><li>c) a url that resolves to (b)</li><li>d) a <code><name>@<version></code> that is published on the registry with (c)</li><li>e) a <code><name>@<tag></code> that points to (d)</li><li>f) a <code><name></code> that has a "latest" tag satisfying (e)</li><li>g) a <code><git remote url></code> that resolves to (b)</li></ul>
|
||||
<ul><li>a) a folder containing a program described by a package.json file</li><li>b) a gzipped tarball containing (a)</li><li>c) a url that resolves to (b)</li><li>d) a <code><name>@<version></code> that is published on the registry with (c)</li><li>e) a <code><name>@<tag></code> that points to (d)</li><li>f) a <code><name></code> that has a "latest" tag satisfying (e)</li><li>g) a <code><git remote url></code> that resolves to (b)</li></ul>
|
||||
|
||||
<p>Even if you never publish your package, you can still get a lot of
|
||||
benefits of using npm if you just want to write a node program (a), and
|
||||
|
@ -40,7 +40,7 @@ it installs the current package context (ie, the current working
|
|||
directory) as a global package.</p></li><li><p><code>npm install <folder></code>:</p><p>Install a package that is sitting in a folder on the filesystem.</p></li><li><p><code>npm install <tarball file></code>:</p><p>Install a package that is sitting on the filesystem. Note: if you just want
|
||||
to link a dev directory into your npm root, you can do this more easily by
|
||||
using <code>npm link</code>.</p><p>Example:</p><pre><code> npm install ./package.tgz</code></pre></li><li><p><code>npm install <tarball url></code>:</p><p>Fetch the tarball url, and then install it. In order to distinguish between
|
||||
this and other options, the argument must start with "http://" or "https://"</p><p>Example:</p><pre><code> npm install https://github.com/indexzero/forever/tarball/v0.5.6</code></pre></li><li><p><code>npm install <name> [--save|--save-dev|--save-optional]</code>:</p><p>Do a <code><name>@<tag></code> install, where <code><tag></code> is the "tag" config. (See
|
||||
this and other options, the argument must start with "http://" or "https://"</p><p>Example:</p><pre><code> npm install https://github.com/indexzero/forever/tarball/v0.5.6</code></pre></li><li><p><code>npm install <name> [--save|--save-dev|--save-optional]</code>:</p><p>Do a <code><name>@<tag></code> install, where <code><tag></code> is the "tag" config. (See
|
||||
<code><a href="../doc/config.html">config(1)</a></code>.)</p><p>In most cases, this will install the latest version
|
||||
of the module published on npm.</p><p>Example:</p><p> npm install sax</p><p><code>npm install</code> takes 3 exclusive, optional flags which save or update
|
||||
the package version in your main package.json:</p><ul><li><p><code>--save</code>: Package will appear in your <code>dependencies</code>.</p></li><li><p><code>--save-dev</code>: Package will appear in your <code>devDependencies</code>.</p></li><li><p><code>--save-optional</code>: Package will appear in your <code>optionalDependencies</code>.</p><p>Examples:</p><p> npm install sax --save
|
||||
|
@ -52,7 +52,7 @@ If the tag does not exist in the registry data for that package, then this
|
|||
will fail.</p><p>Example:</p><pre><code> npm install sax@latest</code></pre></li><li><p><code>npm install <name>@<version></code>:</p><p>Install the specified version of the package. This will fail if the version
|
||||
has not been published to the registry.</p><p>Example:</p><pre><code> npm install sax@0.1.1</code></pre></li><li><p><code>npm install <name>@<version range></code>:</p><p>Install a version of the package matching the specified version range. This
|
||||
will follow the same rules for resolving dependencies described in <code><a href="../doc/json.html">json(1)</a></code>.</p><p>Note that most version ranges must be put in quotes so that your shell will
|
||||
treat it as a single argument.</p><p>Example:</p><p> npm install sax@">=0.1.0 <0.2.0"</p></li><li><p><code>npm install <git remote url></code>:</p><p>Install a package by cloning a git remote url. The format of the git
|
||||
treat it as a single argument.</p><p>Example:</p><p> npm install sax@">=0.1.0 <0.2.0"</p></li><li><p><code>npm install <git remote url></code>:</p><p>Install a package by cloning a git remote url. The format of the git
|
||||
url is:</p><p> <protocol>://[<user>@]<hostname><separator><path>[#<commit-ish>]</p><p><code><protocol></code> is one of <code>git</code>, <code>git+ssh</code>, <code>git+http</code>, or
|
||||
<code>git+https</code>. If no <code><commit-ish></code> is specified, then <code>master</code> is
|
||||
used.</p><p>Examples:</p><pre><code> git+ssh://git@github.com:isaacs/npm.git#v1.0.27
|
||||
|
@ -62,7 +62,7 @@ used.</p><p>Examples:</p><pre><code> git+ssh://git@github.com:isaacs/npm.git#v1
|
|||
<p>You may combine multiple arguments, and even multiple types of arguments.
|
||||
For example:</p>
|
||||
|
||||
<pre><code>npm install sax@">=0.1.0 <0.2.0" bench supervisor</code></pre>
|
||||
<pre><code>npm install sax@">=0.1.0 <0.2.0" bench supervisor</code></pre>
|
||||
|
||||
<p>The <code>--tag</code> argument will apply to all of the specified install targets.</p>
|
||||
|
||||
|
@ -78,7 +78,7 @@ rather than locally. See <code><a href="../doc/folders.html">folders(1)</a></co
|
|||
local space in some cases.</p>
|
||||
|
||||
<p>See <code><a href="../doc/config.html">config(1)</a></code>. Many of the configuration params have some
|
||||
effect on installation, since that's most of what npm does.</p>
|
||||
effect on installation, since that's most of what npm does.</p>
|
||||
|
||||
<h2 id="ALGORITHM">ALGORITHM</h2>
|
||||
|
||||
|
@ -108,18 +108,18 @@ already caused C to be installed at a higher level.</p>
|
|||
<p>See <a href="../doc/folders.html">folders(1)</a> for a more detailed description of the specific
|
||||
folder structures that npm creates.</p>
|
||||
|
||||
<h3 id="Limitations-of-npm-s-Install-Algorithm">Limitations of npm's Install Algorithm</h3>
|
||||
<h3 id="Limitations-of-npm-s-Install-Algorithm">Limitations of npm's Install Algorithm</h3>
|
||||
|
||||
<p>There are some very rare and pathological edge-cases where a cycle can
|
||||
cause npm to try to install a never-ending tree of packages. Here is
|
||||
the simplest case:</p>
|
||||
|
||||
<pre><code>A -> B -> A' -> B' -> A -> B -> A' -> B' -> A -> ...</code></pre>
|
||||
<pre><code>A -> B -> A' -> B' -> A -> B -> A' -> B' -> A -> ...</code></pre>
|
||||
|
||||
<p>where <code>A</code> is some version of a package, and <code>A'</code> is a different version
|
||||
<p>where <code>A</code> is some version of a package, and <code>A'</code> is a different version
|
||||
of the same package. Because <code>B</code> depends on a different version of <code>A</code>
|
||||
than the one that is already in the tree, it must install a separate
|
||||
copy. The same is true of <code>A'</code>, which must install <code>B'</code>. Because <code>B'</code>
|
||||
copy. The same is true of <code>A'</code>, which must install <code>B'</code>. Because <code>B'</code>
|
||||
depends on the original version of <code>A</code>, which has been overridden, the
|
||||
cycle falls into infinite regress.</p>
|
||||
|
||||
|
@ -133,7 +133,7 @@ affects a real use-case, it will be investigated.</p>
|
|||
|
||||
<ul><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/rebuild.html">rebuild(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/tag.html">tag(1)</a></li><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/shrinkwrap.html">shrinkwrap(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">install — npm@1.1.46</p>
|
||||
<p id="footer">install — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -6,11 +6,11 @@
|
|||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<h1><a href="../doc/json.html">json</a></h1> <p>Specifics of npm's package.json handling</p>
|
||||
<h1><a href="../doc/json.html">json</a></h1> <p>Specifics of npm's package.json handling</p>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This document is all you need to know about what's required in your package.json
|
||||
<p>This document is all you need to know about what's required in your package.json
|
||||
file. It must be actual JSON, not just a JavaScript object literal.</p>
|
||||
|
||||
<p>A lot of the behavior described in this document is affected by the config
|
||||
|
@ -20,9 +20,10 @@ settings described in <code><a href="../doc/config.html">config(1)</a></code>.</
|
|||
|
||||
<p>npm will default some values based on package contents.</p>
|
||||
|
||||
<ul><li><p><code>"scripts": {"start": "node server.js"}</code></p><p>If there is a <code>server.js</code> file in the root of your package, then npm
|
||||
will default the <code>start</code> command to <code>node server.js</code>.</p></li><li><p><code>"scripts":{"preinstall": "node-waf clean || true; node-waf configure build"}</code></p><p>If there is a <code>wscript</code> file in the root of your package, npm will
|
||||
default the <code>preinstall</code> command to compile using node-waf.</p></li><li><p><code>"contributors": [...]</code></p><p>If there is an <code>AUTHORS</code> file in the root of your package, npm will
|
||||
<ul><li><p><code>"scripts": {"start": "node server.js"}</code></p><p>If there is a <code>server.js</code> file in the root of your package, then npm
|
||||
will default the <code>start</code> command to <code>node server.js</code>.</p></li><li><p><code>"scripts":{"preinstall": "node-waf clean || true; node-waf configure build"}</code></p><p>If there is a <code>wscript</code> file in the root of your package, npm will
|
||||
default the <code>preinstall</code> command to compile using node-waf.</p></li><li><p><code>"scripts":{"preinstall": "node-gyp rebuild"}</code></p><p>If there is a <code>binding.gyp</code> file in the root of your package, npm will
|
||||
default the <code>preinstall</code> command to compile using node-gyp.</p></li><li><p><code>"contributors": [...]</code></p><p>If there is an <code>AUTHORS</code> file in the root of your package, npm will
|
||||
treat each line as a <code>Name <email> (url)</code> format, where email and url
|
||||
are optional. Lines which start with a <code>#</code> or are blank, will be
|
||||
ignored.</p></li></ul>
|
||||
|
@ -30,25 +31,25 @@ ignored.</p></li></ul>
|
|||
<h2 id="name">name</h2>
|
||||
|
||||
<p>The <em>most</em> important things in your package.json are the name and version fields.
|
||||
Those are actually required, and your package won't install without
|
||||
Those are actually required, and your package won't install without
|
||||
them. The name and version together form an identifier that is assumed
|
||||
to be completely unique. Changes to the package should come along with
|
||||
changes to the version.</p>
|
||||
|
||||
<p>The name is what your thing is called. Some tips:</p>
|
||||
|
||||
<ul><li>Don't put "js" or "node" in the name. It's assumed that it's js, since you're
|
||||
writing a package.json file, and you can specify the engine using the "engines"
|
||||
<ul><li>Don't put "js" or "node" in the name. It's assumed that it's js, since you're
|
||||
writing a package.json file, and you can specify the engine using the "engines"
|
||||
field. (See below.)</li><li>The name ends up being part of a URL, an argument on the command line, and a
|
||||
folder name. Any name with non-url-safe characters will be rejected.
|
||||
Also, it can't start with a dot or an underscore.</li><li>The name will probably be passed as an argument to require(), so it should
|
||||
be something short, but also reasonably descriptive.</li><li>You may want to check the npm registry to see if there's something by that name
|
||||
Also, it can't start with a dot or an underscore.</li><li>The name will probably be passed as an argument to require(), so it should
|
||||
be something short, but also reasonably descriptive.</li><li>You may want to check the npm registry to see if there's something by that name
|
||||
already, before you get too attached to it. http://registry.npmjs.org/</li></ul>
|
||||
|
||||
<h2 id="version">version</h2>
|
||||
|
||||
<p>The <em>most</em> important things in your package.json are the name and version fields.
|
||||
Those are actually required, and your package won't install without
|
||||
Those are actually required, and your package won't install without
|
||||
them. The name and version together form an identifier that is assumed
|
||||
to be completely unique. Changes to the package should come along with
|
||||
changes to the version.</p>
|
||||
|
@ -57,89 +58,89 @@ changes to the version.</p>
|
|||
<a href="https://github.com/isaacs/node-semver">node-semver</a>, which is bundled
|
||||
with npm as a dependency. (<code>npm install semver</code> to use it yourself.)</p>
|
||||
|
||||
<p>Here's how npm's semver implementation deviates from what's on semver.org:</p>
|
||||
<p>Here's how npm's semver implementation deviates from what's on semver.org:</p>
|
||||
|
||||
<ul><li>Versions can start with "v"</li><li>A numeric item separated from the main three-number version by a hyphen
|
||||
will be interpreted as a "build" number, and will <em>increase</em> the version.
|
||||
But, if the tag is not a number separated by a hyphen, then it's treated
|
||||
<ul><li>Versions can start with "v"</li><li>A numeric item separated from the main three-number version by a hyphen
|
||||
will be interpreted as a "build" number, and will <em>increase</em> the version.
|
||||
But, if the tag is not a number separated by a hyphen, then it's treated
|
||||
as a pre-release tag, and is <em>less than</em> the version without a tag.
|
||||
So, <code>0.1.2-7 > 0.1.2-7-beta > 0.1.2-6 > 0.1.2 > 0.1.2beta</code></li></ul>
|
||||
|
||||
<p>This is a little bit confusing to explain, but matches what you see in practice
|
||||
when people create tags in git like "v1.2.3" and then do "git describe" to generate
|
||||
when people create tags in git like "v1.2.3" and then do "git describe" to generate
|
||||
a patch version.</p>
|
||||
|
||||
<h2 id="description">description</h2>
|
||||
|
||||
<p>Put a description in it. It's a string. This helps people discover your
|
||||
package, as it's listed in <code>npm search</code>.</p>
|
||||
<p>Put a description in it. It's a string. This helps people discover your
|
||||
package, as it's listed in <code>npm search</code>.</p>
|
||||
|
||||
<h2 id="keywords">keywords</h2>
|
||||
|
||||
<p>Put keywords in it. It's an array of strings. This helps people
|
||||
discover your package as it's listed in <code>npm search</code>.</p>
|
||||
<p>Put keywords in it. It's an array of strings. This helps people
|
||||
discover your package as it's listed in <code>npm search</code>.</p>
|
||||
|
||||
<h2 id="homepage">homepage</h2>
|
||||
|
||||
<p>The url to the project homepage.</p>
|
||||
|
||||
<p><strong>NOTE</strong>: This is <em>not</em> the same as "url". If you put a "url" field,
|
||||
then the registry will think it's a redirection to your package that has
|
||||
<p><strong>NOTE</strong>: This is <em>not</em> the same as "url". If you put a "url" field,
|
||||
then the registry will think it's a redirection to your package that has
|
||||
been published somewhere else, and spit at you.</p>
|
||||
|
||||
<p>Literally. Spit. I'm so not kidding.</p>
|
||||
<p>Literally. Spit. I'm so not kidding.</p>
|
||||
|
||||
<h2 id="bugs">bugs</h2>
|
||||
|
||||
<p>The url to your project's issue tracker and / or the email address to which
|
||||
<p>The url to your project's issue tracker and / or the email address to which
|
||||
issues should be reported. These are helpful for people who encounter issues
|
||||
with your package.</p>
|
||||
|
||||
<p>It should look like this:</p>
|
||||
|
||||
<pre><code>{ "url" : "http://github.com/owner/project/issues"
|
||||
, "email" : "project@hostname.com"
|
||||
<pre><code>{ "url" : "http://github.com/owner/project/issues"
|
||||
, "email" : "project@hostname.com"
|
||||
}</code></pre>
|
||||
|
||||
<p>You can specify either one or both values. If you want to provide only a url,
|
||||
you can specify the value for "bugs" as a simple string instead of an object.</p>
|
||||
you can specify the value for "bugs" as a simple string instead of an object.</p>
|
||||
|
||||
<p>If a url is provided, it will be used by the <code>npm bugs</code> command.</p>
|
||||
|
||||
<h2 id="people-fields-author-contributors">people fields: author, contributors</h2>
|
||||
|
||||
<p>The "author" is one person. "contributors" is an array of people. A "person"
|
||||
is an object with a "name" field and optionally "url" and "email", like this:</p>
|
||||
<p>The "author" is one person. "contributors" is an array of people. A "person"
|
||||
is an object with a "name" field and optionally "url" and "email", like this:</p>
|
||||
|
||||
<pre><code>{ "name" : "Barney Rubble"
|
||||
, "email" : "b@rubble.com"
|
||||
, "url" : "http://barnyrubble.tumblr.com/"
|
||||
<pre><code>{ "name" : "Barney Rubble"
|
||||
, "email" : "b@rubble.com"
|
||||
, "url" : "http://barnyrubble.tumblr.com/"
|
||||
}</code></pre>
|
||||
|
||||
<p>Or you can shorten that all into a single string, and npm will parse it for you:</p>
|
||||
|
||||
<pre><code>"Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)</code></pre>
|
||||
<pre><code>"Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)</code></pre>
|
||||
|
||||
<p>Both email and url are optional either way.</p>
|
||||
|
||||
<p>npm also sets a top-level "maintainers" field with your npm user info.</p>
|
||||
<p>npm also sets a top-level "maintainers" field with your npm user info.</p>
|
||||
|
||||
<h2 id="files">files</h2>
|
||||
|
||||
<p>The "files" field is an array of files to include in your project. If
|
||||
<p>The "files" field is an array of files to include in your project. If
|
||||
you name a folder in the array, then it will also include the files
|
||||
inside that folder. (Unless they would be ignored by another rule.)</p>
|
||||
|
||||
<p>You can also provide a ".npmignore" file in the root of your package,
|
||||
<p>You can also provide a ".npmignore" file in the root of your package,
|
||||
which will keep files from being included, even if they would be picked
|
||||
up by the files array. The ".npmignore" file works just like a
|
||||
".gitignore".</p>
|
||||
up by the files array. The ".npmignore" file works just like a
|
||||
".gitignore".</p>
|
||||
|
||||
<h2 id="main">main</h2>
|
||||
|
||||
<p>The main field is a module ID that is the primary entry point to your program.
|
||||
That is, if your package is named <code>foo</code>, and a user installs it, and then does
|
||||
<code>require("foo")</code>, then your main module's exports object will be returned.</p>
|
||||
<code>require("foo")</code>, then your main module's exports object will be returned.</p>
|
||||
|
||||
<p>This should be a module ID relative to the root of your package folder.</p>
|
||||
|
||||
|
@ -148,9 +149,9 @@ much else.</p>
|
|||
|
||||
<h2 id="bin">bin</h2>
|
||||
|
||||
<p>A lot of packages have one or more executable files that they'd like to
|
||||
<p>A lot of packages have one or more executable files that they'd like to
|
||||
install into the PATH. npm makes this pretty easy (in fact, it uses this
|
||||
feature to install the "npm" executable.)</p>
|
||||
feature to install the "npm" executable.)</p>
|
||||
|
||||
<p>To use this, supply a <code>bin</code> field in your package.json which is a map of
|
||||
command name to local file name. On install, npm will symlink that file into
|
||||
|
@ -159,49 +160,49 @@ installs.</p>
|
|||
|
||||
<p>For example, npm has this:</p>
|
||||
|
||||
<pre><code>{ "bin" : { "npm" : "./cli.js" } }</code></pre>
|
||||
<pre><code>{ "bin" : { "npm" : "./cli.js" } }</code></pre>
|
||||
|
||||
<p>So, when you install npm, it'll create a symlink from the <code>cli.js</code> script to
|
||||
<p>So, when you install npm, it'll create a symlink from the <code>cli.js</code> script to
|
||||
<code>/usr/local/bin/npm</code>.</p>
|
||||
|
||||
<p>If you have a single executable, and its name should be the name
|
||||
of the package, then you can just supply it as a string. For example:</p>
|
||||
|
||||
<pre><code>{ "name": "my-program"
|
||||
, "version": "1.2.5"
|
||||
, "bin": "./path/to/program" }</code></pre>
|
||||
<pre><code>{ "name": "my-program"
|
||||
, "version": "1.2.5"
|
||||
, "bin": "./path/to/program" }</code></pre>
|
||||
|
||||
<p>would be the same as this:</p>
|
||||
|
||||
<pre><code>{ "name": "my-program"
|
||||
, "version": "1.2.5"
|
||||
, "bin" : { "my-program" : "./path/to/program" } }</code></pre>
|
||||
<pre><code>{ "name": "my-program"
|
||||
, "version": "1.2.5"
|
||||
, "bin" : { "my-program" : "./path/to/program" } }</code></pre>
|
||||
|
||||
<h2 id="man">man</h2>
|
||||
|
||||
<p>Specify either a single file or an array of filenames to put in place for the
|
||||
<code>man</code> program to find.</p>
|
||||
|
||||
<p>If only a single file is provided, then it's installed such that it is the
|
||||
<p>If only a single file is provided, then it's installed such that it is the
|
||||
result from <code>man <pkgname></code>, regardless of its actual filename. For example:</p>
|
||||
|
||||
<pre><code>{ "name" : "foo"
|
||||
, "version" : "1.2.3"
|
||||
, "description" : "A packaged foo fooer for fooing foos"
|
||||
, "main" : "foo.js"
|
||||
, "man" : "./man/doc.1"
|
||||
<pre><code>{ "name" : "foo"
|
||||
, "version" : "1.2.3"
|
||||
, "description" : "A packaged foo fooer for fooing foos"
|
||||
, "main" : "foo.js"
|
||||
, "man" : "./man/doc.1"
|
||||
}</code></pre>
|
||||
|
||||
<p>would link the <code>./man/doc.1</code> file in such that it is the target for <code>man foo</code></p>
|
||||
|
||||
<p>If the filename doesn't start with the package name, then it's prefixed.
|
||||
<p>If the filename doesn't start with the package name, then it's prefixed.
|
||||
So, this:</p>
|
||||
|
||||
<pre><code>{ "name" : "foo"
|
||||
, "version" : "1.2.3"
|
||||
, "description" : "A packaged foo fooer for fooing foos"
|
||||
, "main" : "foo.js"
|
||||
, "man" : [ "./man/foo.1", "./man/bar.1" ]
|
||||
<pre><code>{ "name" : "foo"
|
||||
, "version" : "1.2.3"
|
||||
, "description" : "A packaged foo fooer for fooing foos"
|
||||
, "main" : "foo.js"
|
||||
, "man" : [ "./man/foo.1", "./man/bar.1" ]
|
||||
}</code></pre>
|
||||
|
||||
<p>will create files to do <code>man foo</code> and <code>man foo-bar</code>.</p>
|
||||
|
@ -209,11 +210,11 @@ So, this:</p>
|
|||
<p>Man files must end with a number, and optionally a <code>.gz</code> suffix if they are
|
||||
compressed. The number dictates which man section the file is installed into.</p>
|
||||
|
||||
<pre><code>{ "name" : "foo"
|
||||
, "version" : "1.2.3"
|
||||
, "description" : "A packaged foo fooer for fooing foos"
|
||||
, "main" : "foo.js"
|
||||
, "man" : [ "./man/foo.1", "./man/foo.2" ]
|
||||
<pre><code>{ "name" : "foo"
|
||||
, "version" : "1.2.3"
|
||||
, "description" : "A packaged foo fooer for fooing foos"
|
||||
, "main" : "foo.js"
|
||||
, "man" : [ "./man/foo.1", "./man/foo.2" ]
|
||||
}</code></pre>
|
||||
|
||||
<p>will create entries for <code>man foo</code> and <code>man 2 foo</code></p>
|
||||
|
@ -222,26 +223,26 @@ compressed. The number dictates which man section the file is installed into.</
|
|||
|
||||
<p>The CommonJS <a href="http://wiki.commonjs.org/wiki/Packages/1.0">Packages</a> spec details a
|
||||
few ways that you can indicate the structure of your package using a <code>directories</code>
|
||||
hash. If you look at <a href="http://registry.npmjs.org/npm/latest">npm's package.json</a>,
|
||||
you'll see that it has directories for doc, lib, and man.</p>
|
||||
hash. If you look at <a href="http://registry.npmjs.org/npm/latest">npm's package.json</a>,
|
||||
you'll see that it has directories for doc, lib, and man.</p>
|
||||
|
||||
<p>In the future, this information may be used in other creative ways.</p>
|
||||
|
||||
<h3 id="directories-lib">directories.lib</h3>
|
||||
|
||||
<p>Tell people where the bulk of your library is. Nothing special is done
|
||||
with the lib folder in any way, but it's useful meta info.</p>
|
||||
with the lib folder in any way, but it's useful meta info.</p>
|
||||
|
||||
<h3 id="directories-bin">directories.bin</h3>
|
||||
|
||||
<p>If you specify a "bin" directory, then all the files in that folder will
|
||||
be used as the "bin" hash.</p>
|
||||
<p>If you specify a "bin" directory, then all the files in that folder will
|
||||
be used as the "bin" hash.</p>
|
||||
|
||||
<p>If you have a "bin" hash already, then this has no effect.</p>
|
||||
<p>If you have a "bin" hash already, then this has no effect.</p>
|
||||
|
||||
<h3 id="directories-man">directories.man</h3>
|
||||
|
||||
<p>A folder that is full of man pages. Sugar to generate a "man" array by
|
||||
<p>A folder that is full of man pages. Sugar to generate a "man" array by
|
||||
walking the folder.</p>
|
||||
|
||||
<h3 id="directories-doc">directories.doc</h3>
|
||||
|
@ -261,23 +262,23 @@ command will be able to find you.</p>
|
|||
|
||||
<p>Do it like this:</p>
|
||||
|
||||
<pre><code>"repository" :
|
||||
{ "type" : "git"
|
||||
, "url" : "http://github.com/isaacs/npm.git"
|
||||
<pre><code>"repository" :
|
||||
{ "type" : "git"
|
||||
, "url" : "http://github.com/isaacs/npm.git"
|
||||
}
|
||||
|
||||
"repository" :
|
||||
{ "type" : "svn"
|
||||
, "url" : "http://v8.googlecode.com/svn/trunk/"
|
||||
"repository" :
|
||||
{ "type" : "svn"
|
||||
, "url" : "http://v8.googlecode.com/svn/trunk/"
|
||||
}</code></pre>
|
||||
|
||||
<p>The URL should be a publicly available (perhaps read-only) url that can be handed
|
||||
directly to a VCS program without any modification. It should not be a url to an
|
||||
html project page that you put in your browser. It's for computers.</p>
|
||||
html project page that you put in your browser. It's for computers.</p>
|
||||
|
||||
<h2 id="scripts">scripts</h2>
|
||||
|
||||
<p>The "scripts" member is an object hash of script commands that are run
|
||||
<p>The "scripts" member is an object hash of script commands that are run
|
||||
at various times in the lifecycle of your package. The key is the lifecycle
|
||||
event, and the value is the command to run at that point.</p>
|
||||
|
||||
|
@ -285,14 +286,14 @@ event, and the value is the command to run at that point.</p>
|
|||
|
||||
<h2 id="config">config</h2>
|
||||
|
||||
<p>A "config" hash can be used to set configuration
|
||||
<p>A "config" hash can be used to set configuration
|
||||
parameters used in package scripts that persist across upgrades. For
|
||||
instance, if a package had the following:</p>
|
||||
|
||||
<pre><code>{ "name" : "foo"
|
||||
, "config" : { "port" : "8080" } }</code></pre>
|
||||
<pre><code>{ "name" : "foo"
|
||||
, "config" : { "port" : "8080" } }</code></pre>
|
||||
|
||||
<p>and then had a "start" command that then referenced the
|
||||
<p>and then had a "start" command that then referenced the
|
||||
<code>npm_package_config_port</code> environment variable, then the user could
|
||||
override that by doing <code>npm config set foo:port 8001</code>.</p>
|
||||
|
||||
|
@ -303,29 +304,29 @@ configs.</p>
|
|||
|
||||
<p>Dependencies are specified with a simple hash of package name to version
|
||||
range. The version range is EITHER a string which has one or more
|
||||
space-separated descriptors, OR a range like "fromVersion - toVersion"</p>
|
||||
space-separated descriptors, OR a range like "fromVersion - toVersion"</p>
|
||||
|
||||
<p><strong>Please do not put test harnesses in your <code>dependencies</code> hash.</strong> See
|
||||
<code>devDependencies</code>, below.</p>
|
||||
|
||||
<p>Version range descriptors may be any of the following styles, where "version"
|
||||
<p>Version range descriptors may be any of the following styles, where "version"
|
||||
is a semver compatible version identifier.</p>
|
||||
|
||||
<ul><li><code>version</code> Must match <code>version</code> exactly</li><li><code>=version</code> Same as just <code>version</code></li><li><code>>version</code> Must be greater than <code>version</code></li><li><code>>=version</code> etc</li><li><code><version</code></li><li><code><=version</code></li><li><code>~version</code> See 'Tilde Version Ranges' below</li><li><code>1.2.x</code> See 'X Version Ranges' below</li><li><code>http://...</code> See 'URLs as Dependencies' below</li><li><code>*</code> Matches any version</li><li><code>""</code> (just an empty string) Same as <code>*</code></li><li><code>version1 - version2</code> Same as <code>>=version1 <=version2</code>.</li><li><code>range1 || range2</code> Passes if either range1 or range2 are satisfied.</li><li><code>git...</code> See 'Git URLs as Dependencies' below</li></ul>
|
||||
<ul><li><code>version</code> Must match <code>version</code> exactly</li><li><code>=version</code> Same as just <code>version</code></li><li><code>>version</code> Must be greater than <code>version</code></li><li><code>>=version</code> etc</li><li><code><version</code></li><li><code><=version</code></li><li><code>~version</code> See 'Tilde Version Ranges' below</li><li><code>1.2.x</code> See 'X Version Ranges' below</li><li><code>http://...</code> See 'URLs as Dependencies' below</li><li><code>*</code> Matches any version</li><li><code>""</code> (just an empty string) Same as <code>*</code></li><li><code>version1 - version2</code> Same as <code>>=version1 <=version2</code>.</li><li><code>range1 || range2</code> Passes if either range1 or range2 are satisfied.</li><li><code>git...</code> See 'Git URLs as Dependencies' below</li></ul>
|
||||
|
||||
<p>For example, these are all valid:</p>
|
||||
|
||||
<pre><code>{ "dependencies" :
|
||||
{ "foo" : "1.0.0 - 2.9999.9999"
|
||||
, "bar" : ">=1.0.2 <2.1.2"
|
||||
, "baz" : ">1.0.2 <=2.3.4"
|
||||
, "boo" : "2.0.1"
|
||||
, "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
|
||||
, "asd" : "http://asdf.com/asdf.tar.gz"
|
||||
, "til" : "~1.2"
|
||||
, "elf" : "~1.2.3"
|
||||
, "two" : "2.x"
|
||||
, "thr" : "3.3.x"
|
||||
<pre><code>{ "dependencies" :
|
||||
{ "foo" : "1.0.0 - 2.9999.9999"
|
||||
, "bar" : ">=1.0.2 <2.1.2"
|
||||
, "baz" : ">1.0.2 <=2.3.4"
|
||||
, "boo" : "2.0.1"
|
||||
, "qux" : "<1.0.0 || >=2.3.1 <2.4.5 || >=2.5.2 <3.0.0"
|
||||
, "asd" : "http://asdf.com/asdf.tar.gz"
|
||||
, "til" : "~1.2"
|
||||
, "elf" : "~1.2.3"
|
||||
, "two" : "2.x"
|
||||
, "thr" : "3.3.x"
|
||||
}
|
||||
}</code></pre>
|
||||
|
||||
|
@ -338,19 +339,19 @@ a version in the following fashion.</p>
|
|||
|
||||
<p>For example, the following are equivalent:</p>
|
||||
|
||||
<ul><li><code>"~1.2.3" = ">=1.2.3 <1.3.0"</code></li><li><code>"~1.2" = ">=1.2.0 <2.0.0"</code></li><li><code>"~1" = ">=1.0.0 <2.0.0"</code></li></ul>
|
||||
<ul><li><code>"~1.2.3" = ">=1.2.3 <1.3.0"</code></li><li><code>"~1.2" = ">=1.2.0 <2.0.0"</code></li><li><code>"~1" = ">=1.0.0 <2.0.0"</code></li></ul>
|
||||
|
||||
<h3 id="X-Version-Ranges">X Version Ranges</h3>
|
||||
|
||||
<p>An "x" in a version range specifies that the version number must start
|
||||
<p>An "x" in a version range specifies that the version number must start
|
||||
with the supplied digits, but any digit may be used in place of the x.</p>
|
||||
|
||||
<p>The following are equivalent:</p>
|
||||
|
||||
<ul><li><code>"1.2.x" = ">=1.2.0 <1.3.0"</code></li><li><code>"1.x.x" = ">=1.0.0 <2.0.0"</code></li><li><code>"1.2" = "1.2.x"</code></li><li><code>"1.x" = "1.x.x"</code></li><li><code>"1" = "1.x.x"</code></li></ul>
|
||||
<ul><li><code>"1.2.x" = ">=1.2.0 <1.3.0"</code></li><li><code>"1.x.x" = ">=1.0.0 <2.0.0"</code></li><li><code>"1.2" = "1.2.x"</code></li><li><code>"1.x" = "1.x.x"</code></li><li><code>"1" = "1.x.x"</code></li></ul>
|
||||
|
||||
<p>You may not supply a comparator with a version containing an x. Any
|
||||
digits after the first "x" are ignored.</p>
|
||||
digits after the first "x" are ignored.</p>
|
||||
|
||||
<h3 id="URLs-as-Dependencies">URLs as Dependencies</h3>
|
||||
|
||||
|
@ -376,10 +377,10 @@ an argument to <code>git checkout</code>. The default is <code>master</code>.</
|
|||
<h2 id="devDependencies">devDependencies</h2>
|
||||
|
||||
<p>If someone is planning on downloading and using your module in their
|
||||
program, then they probably don't want or need to download and build
|
||||
program, then they probably don't want or need to download and build
|
||||
the external test or documentation framework that you use.</p>
|
||||
|
||||
<p>In this case, it's best to list these additional items in a
|
||||
<p>In this case, it's best to list these additional items in a
|
||||
<code>devDependencies</code> hash.</p>
|
||||
|
||||
<p>These things will be installed whenever the <code>--dev</code> configuration flag
|
||||
|
@ -391,7 +392,7 @@ for more on the topic.</p>
|
|||
|
||||
<p>Array of package names that will be bundled when publishing the package.</p>
|
||||
|
||||
<p>If this is spelled <code>"bundleDependencies"</code>, then that is also honorable.</p>
|
||||
<p>If this is spelled <code>"bundleDependencies"</code>, then that is also honorable.</p>
|
||||
|
||||
<h2 id="optionalDependencies">optionalDependencies</h2>
|
||||
|
||||
|
@ -401,12 +402,12 @@ cannot be found or fails to install, then you may put it in the
|
|||
or url, just like the <code>dependencies</code> hash. The difference is that
|
||||
failure is tolerated.</p>
|
||||
|
||||
<p>It is still your program's responsibility to handle the lack of the
|
||||
<p>It is still your program's responsibility to handle the lack of the
|
||||
dependency. For example, something like this:</p>
|
||||
|
||||
<pre><code>try {
|
||||
var foo = require('foo')
|
||||
var fooVersion = require('foo/package.json').version
|
||||
var foo = require('foo')
|
||||
var fooVersion = require('foo/package.json').version
|
||||
} catch (er) {
|
||||
foo = null
|
||||
}
|
||||
|
@ -421,25 +422,25 @@ if (foo) {
|
|||
}</code></pre>
|
||||
|
||||
<p>Entries in <code>optionalDependencies</code> will override entries of the same name in
|
||||
<code>dependencies</code>, so it's usually best to only put in one place.</p>
|
||||
<code>dependencies</code>, so it's usually best to only put in one place.</p>
|
||||
|
||||
<h2 id="engines">engines</h2>
|
||||
|
||||
<p>You can specify the version of node that your stuff works on:</p>
|
||||
|
||||
<pre><code>{ "engines" : { "node" : ">=0.1.27 <0.1.30" } }</code></pre>
|
||||
<pre><code>{ "engines" : { "node" : ">=0.1.27 <0.1.30" } }</code></pre>
|
||||
|
||||
<p>And, like with dependencies, if you don't specify the version (or if you
|
||||
specify "*" as the version), then any version of node will do.</p>
|
||||
<p>And, like with dependencies, if you don't specify the version (or if you
|
||||
specify "*" as the version), then any version of node will do.</p>
|
||||
|
||||
<p>If you specify an "engines" field, then npm will require that "node" be
|
||||
somewhere on that list. If "engines" is omitted, then npm will just assume
|
||||
<p>If you specify an "engines" field, then npm will require that "node" be
|
||||
somewhere on that list. If "engines" is omitted, then npm will just assume
|
||||
that it works on node.</p>
|
||||
|
||||
<p>You can also use the "engines" field to specify which versions of npm
|
||||
<p>You can also use the "engines" field to specify which versions of npm
|
||||
are capable of properly installing your program. For example:</p>
|
||||
|
||||
<pre><code>{ "engines" : { "npm" : "~1.0.20" } }</code></pre>
|
||||
<pre><code>{ "engines" : { "npm" : "~1.0.20" } }</code></pre>
|
||||
|
||||
<p>Note that, unless the user has set the <code>engine-strict</code> config flag, this
|
||||
field is advisory only.</p>
|
||||
|
@ -448,8 +449,8 @@ field is advisory only.</p>
|
|||
|
||||
<p>If you are sure that your module will <em>definitely not</em> run properly on
|
||||
versions of Node/npm other than those specified in the <code>engines</code> hash,
|
||||
then you can set <code>"engineStrict": true</code> in your package.json file.
|
||||
This will override the user's <code>engine-strict</code> config setting.</p>
|
||||
then you can set <code>"engineStrict": true</code> in your package.json file.
|
||||
This will override the user's <code>engine-strict</code> config setting.</p>
|
||||
|
||||
<p>Please do not do this unless you are really very very sure. If your
|
||||
engines hash is something overly restrictive, you can quite easily and
|
||||
|
@ -462,16 +463,16 @@ people abuse it, it will be removed in a future version of npm.</p>
|
|||
<p>You can specify which operating systems your
|
||||
module will run on:</p>
|
||||
|
||||
<pre><code>"os" : [ "darwin", "linux" ]</code></pre>
|
||||
<pre><code>"os" : [ "darwin", "linux" ]</code></pre>
|
||||
|
||||
<p>You can also blacklist instead of whitelist operating systems,
|
||||
just prepend the blacklisted os with a '!':</p>
|
||||
just prepend the blacklisted os with a '!':</p>
|
||||
|
||||
<pre><code>"os" : [ "!win32" ]</code></pre>
|
||||
<pre><code>"os" : [ "!win32" ]</code></pre>
|
||||
|
||||
<p>The host operating system is determined by <code>process.platform</code></p>
|
||||
|
||||
<p>It is allowed to both blacklist, and whitelist, although there isn't any
|
||||
<p>It is allowed to both blacklist, and whitelist, although there isn't any
|
||||
good reason to do this.</p>
|
||||
|
||||
<h2 id="cpu">cpu</h2>
|
||||
|
@ -479,11 +480,11 @@ good reason to do this.</p>
|
|||
<p>If your code only runs on certain cpu architectures,
|
||||
you can specify which ones.</p>
|
||||
|
||||
<pre><code>"cpu" : [ "x64", "ia32" ]</code></pre>
|
||||
<pre><code>"cpu" : [ "x64", "ia32" ]</code></pre>
|
||||
|
||||
<p>Like the <code>os</code> option, you can also blacklist architectures:</p>
|
||||
|
||||
<pre><code>"cpu" : [ "!arm", "!mips" ]</code></pre>
|
||||
<pre><code>"cpu" : [ "!arm", "!mips" ]</code></pre>
|
||||
|
||||
<p>The host architecture is determined by <code>process.arch</code></p>
|
||||
|
||||
|
@ -493,12 +494,12 @@ you can specify which ones.</p>
|
|||
installed globally, then set this value to <code>true</code> to provide a warning
|
||||
if it is installed locally.</p>
|
||||
|
||||
<p>It doesn't actually prevent users from installing it locally, but it
|
||||
does help prevent some confusion if it doesn't work as expected.</p>
|
||||
<p>It doesn't actually prevent users from installing it locally, but it
|
||||
does help prevent some confusion if it doesn't work as expected.</p>
|
||||
|
||||
<h2 id="private">private</h2>
|
||||
|
||||
<p>If you set <code>"private": true</code> in your package.json, then npm will refuse
|
||||
<p>If you set <code>"private": true</code> in your package.json, then npm will refuse
|
||||
to publish it.</p>
|
||||
|
||||
<p>This is a way to prevent accidental publication of private repositories.
|
||||
|
@ -509,13 +510,13 @@ to override the <code>registry</code> config param at publish-time.</p>
|
|||
|
||||
<h2 id="publishConfig">publishConfig</h2>
|
||||
|
||||
<p>This is a set of config values that will be used at publish-time. It's
|
||||
<p>This is a set of config values that will be used at publish-time. It's
|
||||
especially handy if you want to set the tag or registry, so that you can
|
||||
ensure that a given package is not tagged with "latest" or published to
|
||||
ensure that a given package is not tagged with "latest" or published to
|
||||
the global public registry by default.</p>
|
||||
|
||||
<p>Any config values can be overridden, but of course only "tag" and
|
||||
"registry" probably matter for the purposes of publishing.</p>
|
||||
<p>Any config values can be overridden, but of course only "tag" and
|
||||
"registry" probably matter for the purposes of publishing.</p>
|
||||
|
||||
<p>See <code><a href="../doc/config.html">config(1)</a></code> to see the list of config options that can be
|
||||
overridden.</p>
|
||||
|
@ -524,7 +525,7 @@ overridden.</p>
|
|||
|
||||
<ul><li><a href="../doc/semver.html">semver(1)</a></li><li><a href="../doc/init.html">init(1)</a></li><li><a href="../doc/version.html">version(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/rm.html">rm(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">json — npm@1.1.46</p>
|
||||
<p id="footer">json — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -24,7 +24,7 @@ symbolic link from <code>prefix/package-name</code> to the current folder.</p>
|
|||
symlink from the local <code>node_modules</code> folder to the global symlink.</p>
|
||||
|
||||
<p>When creating tarballs for <code>npm publish</code>, the linked packages are
|
||||
"snapshotted" to their current state by resolving the symbolic links.</p>
|
||||
"snapshotted" to their current state by resolving the symbolic links.</p>
|
||||
|
||||
<p>This is
|
||||
handy for installing your own stuff, so that you can work on it and test it
|
||||
|
@ -52,13 +52,13 @@ npm link ../node-redis # link the dir of your dependency</code></pre>
|
|||
npm link redis</code></pre>
|
||||
|
||||
<p>That is, it first creates a global link, and then links the global
|
||||
installation target into your project's <code>node_modules</code> folder.</p>
|
||||
installation target into your project's <code>node_modules</code> folder.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">link — npm@1.1.46</p>
|
||||
<p id="footer">link — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -23,9 +23,9 @@ installed, as well as their dependencies, in a tree-structure.</p>
|
|||
<p>Positional arguments are <code>name@version-range</code> identifiers, which will
|
||||
limit the results to only the paths to the packages named. Note that
|
||||
nested packages will <em>also</em> show the paths to the specified packages.
|
||||
For example, running <code>npm ls promzard</code> in npm's source tree will show:</p>
|
||||
For example, running <code>npm ls promzard</code> in npm's source tree will show:</p>
|
||||
|
||||
<pre><code>npm@1.1.46 /path/to/npm
|
||||
<pre><code>npm@1.1.49 /path/to/npm
|
||||
└─┬ init-package-json@0.0.4
|
||||
└── promzard@0.1.5</code></pre>
|
||||
|
||||
|
@ -64,7 +64,7 @@ project.</p>
|
|||
|
||||
<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/link.html">link(1)</a></li><li><a href="../doc/prune.html">prune(1)</a></li><li><a href="../doc/outdated.html">outdated(1)</a></li><li><a href="../doc/update.html">update(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">list — npm@1.1.46</p>
|
||||
<p id="footer">list — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
<h2 id="VERSION">VERSION</h2>
|
||||
|
||||
<p>1.1.46</p>
|
||||
<p>1.1.49</p>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
|
@ -32,11 +32,11 @@ programs.</p>
|
|||
|
||||
<p>You probably got npm because you want to install stuff.</p>
|
||||
|
||||
<p>Use <code>npm install blerg</code> to install the latest version of "blerg". Check out
|
||||
<p>Use <code>npm install blerg</code> to install the latest version of "blerg". Check out
|
||||
<code><a href="../doc/install.html">install(1)</a></code> for more info. It can do a lot of stuff.</p>
|
||||
|
||||
<p>Use the <code>npm search</code> command to show everything that's available.
|
||||
Use <code>npm ls</code> to show everything you've installed.</p>
|
||||
<p>Use the <code>npm search</code> command to show everything that's available.
|
||||
Use <code>npm ls</code> to show everything you've installed.</p>
|
||||
|
||||
<h2 id="DIRECTORIES">DIRECTORIES</h2>
|
||||
|
||||
|
@ -54,15 +54,15 @@ operate in global mode instead.</p>
|
|||
|
||||
<h2 id="DEVELOPER-USAGE">DEVELOPER USAGE</h2>
|
||||
|
||||
<p>If you're using npm to develop and publish your code, check out the
|
||||
<p>If you're using npm to develop and publish your code, check out the
|
||||
following help topics:</p>
|
||||
|
||||
<ul><li>json:
|
||||
Make a package.json file. See <code><a href="../doc/json.html">json(1)</a></code>.</li><li>link:
|
||||
For linking your current working code into Node's path, so that you
|
||||
don't have to reinstall every time you make a change. Use
|
||||
For linking your current working code into Node's path, so that you
|
||||
don't have to reinstall every time you make a change. Use
|
||||
<code>npm link</code> to do this.</li><li>install:
|
||||
It's a good idea to install things if you don't need the symbolic link.
|
||||
It's a good idea to install things if you don't need the symbolic link.
|
||||
Especially, installing other peoples code from the registry is done via
|
||||
<code>npm install</code></li><li>adduser:
|
||||
Create an account or log in. Credentials are stored in the
|
||||
|
@ -75,7 +75,7 @@ Use the <code>npm publish</code> command to upload your code to the registry.</l
|
|||
5 places.</p>
|
||||
|
||||
<ul><li>Command line switches:<br />Set a config with <code>--key val</code>. All keys take a value, even if they
|
||||
are booleans (the config parser doesn't know what the options are at
|
||||
are booleans (the config parser doesn't know what the options are at
|
||||
the time of parsing.) If no value is provided, then the option is set
|
||||
to boolean <code>true</code>.</li><li>Environment Variables:<br />Set any config by prefixing the name in an environment variable with
|
||||
<code>npm_config_</code>. For example, <code>export npm_config_key=val</code>.</li><li>User Configs:<br />The file at $HOME/.npmrc is an ini-formatted list of configs. If
|
||||
|
@ -83,7 +83,7 @@ present, it is parsed. If the <code>userconfig</code> option is set in the cli
|
|||
or env, then that will be used instead.</li><li>Global Configs:<br />The file found at ../etc/npmrc (from the node executable, by default
|
||||
this resolves to /usr/local/etc/npmrc) will be parsed if it is found.
|
||||
If the <code>globalconfig</code> option is set in the cli, env, or user config,
|
||||
then that file is parsed instead.</li><li>Defaults:<br />npm's default configuration options are defined in
|
||||
then that file is parsed instead.</li><li>Defaults:<br />npm's default configuration options are defined in
|
||||
lib/utils/config-defs.js. These must not be changed.</li></ul>
|
||||
|
||||
<p>See <code><a href="../doc/config.html">config(1)</a></code> for much much more information.</p>
|
||||
|
@ -94,14 +94,14 @@ lib/utils/config-defs.js. These must not be changed.</li></ul>
|
|||
|
||||
<ul><li>code:
|
||||
Read through <code><a href="../doc/coding-style.html">coding-style(1)</a></code> if you plan to submit code.
|
||||
You don't have to agree with it, but you do have to follow it.</li><li>docs:
|
||||
You don't have to agree with it, but you do have to follow it.</li><li>docs:
|
||||
If you find an error in the documentation, edit the appropriate markdown
|
||||
file in the "doc" folder. (Don't worry about generating the man page.)</li></ul>
|
||||
file in the "doc" folder. (Don't worry about generating the man page.)</li></ul>
|
||||
|
||||
<p>Contributors are listed in npm's <code>package.json</code> file. You can view them
|
||||
<p>Contributors are listed in npm's <code>package.json</code> file. You can view them
|
||||
easily by doing <code>npm view npm contributors</code>.</p>
|
||||
|
||||
<p>If you would like to contribute, but don't know what to work on, check
|
||||
<p>If you would like to contribute, but don't know what to work on, check
|
||||
the issues list or ask on the mailing list.</p>
|
||||
|
||||
<ul><li><a href="http://github.com/isaacs/npm/issues">http://github.com/isaacs/npm/issues</a></li><li><a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com</a></li></ul>
|
||||
|
@ -114,7 +114,7 @@ the issues list or ask on the mailing list.</p>
|
|||
<a href="http://github.com/isaacs/npm/issues">http://github.com/isaacs/npm/issues</a></li><li>email:
|
||||
<a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com</a></li></ul>
|
||||
|
||||
<p>Be sure to include <em>all</em> of the output from the npm command that didn't work
|
||||
<p>Be sure to include <em>all</em> of the output from the npm command that didn't work
|
||||
as expected. The <code>npm-debug.log</code> file is also helpful to provide.</p>
|
||||
|
||||
<p>You can also look for isaacs in #node.js on irc://irc.freenode.net. He
|
||||
|
@ -135,7 +135,7 @@ will no doubt tell you to put the output in a gist or email.</p>
|
|||
|
||||
<ul><li><a href="../doc/help.html">help(1)</a></li><li><a href="../doc/faq.html">faq(1)</a></li><li><a href="../doc/README.html">README</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/index.html">index(1)</a></li><li><a href="../api/npm.html">npm(3)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">npm — npm@1.1.46</p>
|
||||
<p id="footer">npm — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -21,7 +21,7 @@ packages are currently outdated.</p>
|
|||
|
||||
<ul><li><a href="../doc/update.html">update(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">outdated — npm@1.1.46</p>
|
||||
<p id="footer">outdated — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -27,14 +27,14 @@ Remove a user from the package owner list. This immediately revokes their
|
|||
privileges.</li></ul>
|
||||
|
||||
<p>Note that there is only one level of access. Either you can modify a package,
|
||||
or you can't. Future versions may contain more fine-grained access levels, but
|
||||
or you can't. Future versions may contain more fine-grained access levels, but
|
||||
that is not implemented at this time.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">owner — npm@1.1.46</p>
|
||||
<p id="footer">owner — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>For anything that's installable (that is, a package folder, tarball,
|
||||
<p>For anything that's installable (that is, a package folder, tarball,
|
||||
tarball url, name@tag, name@version, or name), this command will fetch
|
||||
it to the cache, and then copy the tarball to the current working
|
||||
directory as <code><name>-<version>.tgz</code>, and then write the filenames out to
|
||||
|
@ -29,7 +29,7 @@ overwritten the second time.</p>
|
|||
|
||||
<ul><li><a href="../doc/cache.html">cache(1)</a></li><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">pack — npm@1.1.46</p>
|
||||
<p id="footer">pack — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
<ul><li><a href="../doc/root.html">root(1)</a></li><li><a href="../doc/bin.html">bin(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">prefix — npm@1.1.46</p>
|
||||
<p id="footer">prefix — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,18 +14,18 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This command removes "extraneous" packages. If a package name is
|
||||
<p>This command removes "extraneous" packages. If a package name is
|
||||
provided, then only packages matching one of the supplied names are
|
||||
removed.</p>
|
||||
|
||||
<p>Extraneous packages are packages that are not listed on the parent
|
||||
package's dependencies list.</p>
|
||||
package's dependencies list.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">prune — npm@1.1.46</p>
|
||||
<p id="footer">prune — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -23,13 +23,13 @@ A url or file path to a gzipped tar archive containing a single folder
|
|||
with a package.json file inside.</p></li></ul>
|
||||
|
||||
<p>Fails if the package name and version combination already exists in
|
||||
the registry. Overwrites when the "--force" flag is set.</p>
|
||||
the registry. Overwrites when the "--force" flag is set.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li><li><a href="../doc/owner.html">owner(1)</a></li><li><a href="../doc/deprecate.html">deprecate(1)</a></li><li><a href="../doc/tag.html">tag(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">publish — npm@1.1.46</p>
|
||||
<p id="footer">publish — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -25,7 +25,7 @@ the new binary.</p>
|
|||
|
||||
<ul><li><a href="../doc/build.html">build(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">rebuild — npm@1.1.46</p>
|
||||
<p id="footer">rebuild — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
that implements the CommonJS Package Registry specification for reading
|
||||
package info.</p>
|
||||
|
||||
<p>Additionally, npm's package registry implementation supports several
|
||||
<p>Additionally, npm's package registry implementation supports several
|
||||
write APIs as well, to allow for publishing packages and managing user
|
||||
account information.</p>
|
||||
|
||||
|
@ -26,7 +26,7 @@ are CouchDB users, stored in the <a href="http://isaacs.iriscouch.com/_users">ht
|
|||
database.</p>
|
||||
|
||||
<p>The registry URL is supplied by the <code>registry</code> config parameter. See
|
||||
<code><a href="../doc/config.html">config(1)</a></code> for more on managing npm's configuration.</p>
|
||||
<code><a href="../doc/config.html">config(1)</a></code> for more on managing npm's configuration.</p>
|
||||
|
||||
<h2 id="Can-I-run-my-own-private-registry">Can I run my own private registry?</h2>
|
||||
|
||||
|
@ -36,17 +36,17 @@ database.</p>
|
|||
similar) design doc to implement the APIs.</p>
|
||||
|
||||
<p>If you set up continuous replication from the official CouchDB, and then
|
||||
set your internal CouchDB as the registry config, then you'll be able
|
||||
set your internal CouchDB as the registry config, then you'll be able
|
||||
to read any published packages, in addition to your private ones, and by
|
||||
default will only publish internally. If you then want to publish a
|
||||
package for the whole world to see, you can simply override the
|
||||
<code>--registry</code> config for that command.</p>
|
||||
|
||||
<h2 id="I-don-t-want-my-package-published-in-the-official-registry-It-s-private">I don't want my package published in the official registry. It's private.</h2>
|
||||
<h2 id="I-don-t-want-my-package-published-in-the-official-registry-It-s-private">I don't want my package published in the official registry. It's private.</h2>
|
||||
|
||||
<p>Set <code>"private": true</code> in your package.json to prevent it from being
|
||||
<p>Set <code>"private": true</code> in your package.json to prevent it from being
|
||||
published at all, or
|
||||
<code>"publishConfig":{"registry":"http://my-internal-registry.local"}</code>
|
||||
<code>"publishConfig":{"registry":"http://my-internal-registry.local"}</code>
|
||||
to force it to be published only to your internal registry.</p>
|
||||
|
||||
<p>See <code><a href="../doc/json.html">json(1)</a></code> for more info on what goes in the package.json file.</p>
|
||||
|
@ -59,11 +59,11 @@ otherwise.</p>
|
|||
|
||||
<h2 id="Do-I-have-to-use-couchdb-to-build-a-registry-that-npm-can-talk-to">Do I have to use couchdb to build a registry that npm can talk to?</h2>
|
||||
|
||||
<p>No, but it's way easier.</p>
|
||||
<p>No, but it's way easier.</p>
|
||||
|
||||
<h2 id="I-published-something-elsewhere-and-want-to-tell-the-npm-registry-about-it">I published something elsewhere, and want to tell the npm registry about it.</h2>
|
||||
|
||||
<p>That is supported, but not using the npm client. You'll have to get
|
||||
<p>That is supported, but not using the npm client. You'll have to get
|
||||
your hands dirty and do some HTTP. The request looks something like
|
||||
this:</p>
|
||||
|
||||
|
@ -72,19 +72,19 @@ content-type:application/json
|
|||
accept:application/json
|
||||
authorization:Basic $base_64_encoded
|
||||
|
||||
{ "name":"my-foreign-package"
|
||||
, "maintainers":["owner","usernames"]
|
||||
, "description":"A package that is hosted elsewhere"
|
||||
, "keywords":["nih","my cheese smells the best"]
|
||||
, "url":"http://my-different-registry.com/blerg/my-local-package"
|
||||
{ "name":"my-foreign-package"
|
||||
, "maintainers":["owner","usernames"]
|
||||
, "description":"A package that is hosted elsewhere"
|
||||
, "keywords":["nih","my cheese smells the best"]
|
||||
, "url":"http://my-different-registry.com/blerg/my-local-package"
|
||||
}</code></pre>
|
||||
|
||||
<p>(Keywords and description are optional, but recommended. Name,
|
||||
maintainers, and url are required.)</p>
|
||||
|
||||
<p>Then, when a user tries to install "my-foreign-package", it'll redirect
|
||||
to your registry. If that doesn't resolve to a valid package entry,
|
||||
then it'll fail, so please make sure that you understand the spec, and
|
||||
<p>Then, when a user tries to install "my-foreign-package", it'll redirect
|
||||
to your registry. If that doesn't resolve to a valid package entry,
|
||||
then it'll fail, so please make sure that you understand the spec, and
|
||||
ask for help on the <a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com</a> mailing list.</p>
|
||||
|
||||
<h2 id="Is-there-a-website-or-something-to-see-package-docs-and-such">Is there a website or something to see package docs and such?</h2>
|
||||
|
@ -97,7 +97,7 @@ ask for help on the <a href="mailto:npm-@googlegroups.com">npm-@googlegroups.com
|
|||
|
||||
<ul><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/disputes.html">disputes(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">registry — npm@1.1.46</p>
|
||||
<p id="footer">registry — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -21,14 +21,14 @@
|
|||
<h2 id="More-Severe-Uninstalling">More Severe Uninstalling</h2>
|
||||
|
||||
<p>Usually, the above instructions are sufficient. That will remove
|
||||
npm, but leave behind anything you've installed.</p>
|
||||
npm, but leave behind anything you've installed.</p>
|
||||
|
||||
<p>If that doesn't work, or if you require more drastic measures,
|
||||
<p>If that doesn't work, or if you require more drastic measures,
|
||||
continue reading.</p>
|
||||
|
||||
<p>Note that this is only necessary for globally-installed packages. Local
|
||||
installs are completely contained within a project's <code>node_modules</code>
|
||||
folder. Delete that folder, and everything is gone (unless a package's
|
||||
installs are completely contained within a project's <code>node_modules</code>
|
||||
folder. Delete that folder, and everything is gone (unless a package's
|
||||
install script is particularly ill-behaved).</p>
|
||||
|
||||
<p>This assumes that you installed node and npm in the default place. If
|
||||
|
@ -58,7 +58,7 @@ modules. To track those down, you can do the following:</p>
|
|||
|
||||
<ul><li><a href="../doc/README.html">README</a></li><li><a href="../doc/rm.html">rm(1)</a></li><li><a href="../doc/prune.html">prune(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">removing-npm — npm@1.1.46</p>
|
||||
<p id="footer">removing-npm — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,17 +14,17 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This runs a package's "restart" script, if one was provided.
|
||||
Otherwise it runs package's "stop" script, if one was provided, and then
|
||||
the "start" script.</p>
|
||||
<p>This runs a package's "restart" script, if one was provided.
|
||||
Otherwise it runs package's "stop" script, if one was provided, and then
|
||||
the "start" script.</p>
|
||||
|
||||
<p>If no version is specified, then it restarts the "active" version.</p>
|
||||
<p>If no version is specified, then it restarts the "active" version.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">restart — npm@1.1.46</p>
|
||||
<p id="footer">restart — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
<ul><li><a href="../doc/prefix.html">prefix(1)</a></li><li><a href="../doc/bin.html">bin(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">root — npm@1.1.46</p>
|
||||
<p id="footer">root — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This runs an arbitrary command from a package's "scripts" object.</p>
|
||||
<p>This runs an arbitrary command from a package's "scripts" object.</p>
|
||||
|
||||
<p>It is used by the test, start, restart, and stop commands, but can be
|
||||
called directly, as well.</p>
|
||||
|
@ -23,7 +23,7 @@ called directly, as well.</p>
|
|||
|
||||
<ul><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">run-script — npm@1.1.46</p>
|
||||
<p id="footer">run-script — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -6,11 +6,11 @@
|
|||
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<h1><a href="../doc/scripts.html">scripts</a></h1> <p>How npm handles the "scripts" field</p>
|
||||
<h1><a href="../doc/scripts.html">scripts</a></h1> <p>How npm handles the "scripts" field</p>
|
||||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>npm supports the "scripts" member of the package.json script, for the
|
||||
<p>npm supports the "scripts" member of the package.json script, for the
|
||||
following scripts:</p>
|
||||
|
||||
<ul><li>preinstall:
|
||||
|
@ -35,8 +35,8 @@ stop and start scripts if no <code>restart</code> script is provided.</li></ul>
|
|||
|
||||
<p>npm will default some script values based on package contents.</p>
|
||||
|
||||
<ul><li><p><code>"start": "node server.js"</code>:</p><p>If there is a <code>server.js</code> file in the root of your package, then npm
|
||||
will default the <code>start</code> command to <code>node server.js</code>.</p></li><li><p><code>"preinstall": "node-waf clean || true; node-waf configure build"</code>:</p><p>If there is a <code>wscript</code> file in the root of your package, npm will
|
||||
<ul><li><p><code>"start": "node server.js"</code>:</p><p>If there is a <code>server.js</code> file in the root of your package, then npm
|
||||
will default the <code>start</code> command to <code>node server.js</code>.</p></li><li><p><code>"preinstall": "node-waf clean || true; node-waf configure build"</code>:</p><p>If there is a <code>wscript</code> file in the root of your package, npm will
|
||||
default the <code>preinstall</code> command to compile using node-waf.</p></li></ul>
|
||||
|
||||
<h2 id="USER">USER</h2>
|
||||
|
@ -58,9 +58,9 @@ process.</p>
|
|||
then those executables will be added to the <code>PATH</code> for executing the scripts.
|
||||
So, if your package.json has this:</p>
|
||||
|
||||
<pre><code>{ "name" : "foo"
|
||||
, "dependencies" : { "bar" : "0.1.x" }
|
||||
, "scripts": { "start" : "bar ./test" } }</code></pre>
|
||||
<pre><code>{ "name" : "foo"
|
||||
, "dependencies" : { "bar" : "0.1.x" }
|
||||
, "scripts": { "start" : "bar ./test" } }</code></pre>
|
||||
|
||||
<p>then you could run <code>npm start</code> to execute the <code>bar</code> script, which is exported
|
||||
into the <code>node_modules/.bin</code> directory on <code>npm install</code>.</p>
|
||||
|
@ -68,9 +68,9 @@ into the <code>node_modules/.bin</code> directory on <code>npm install</code>.</
|
|||
<h3 id="package-json-vars">package.json vars</h3>
|
||||
|
||||
<p>The package.json fields are tacked onto the <code>npm_package_</code> prefix. So, for
|
||||
instance, if you had <code>{"name":"foo", "version":"1.2.5"}</code> in your package.json
|
||||
instance, if you had <code>{"name":"foo", "version":"1.2.5"}</code> in your package.json
|
||||
file, then your package scripts would have the <code>npm_package_name</code> environment
|
||||
variable set to "foo", and the <code>npm_package_version</code> set to "1.2.5"</p>
|
||||
variable set to "foo", and the <code>npm_package_version</code> set to "1.2.5"</p>
|
||||
|
||||
<h3 id="configuration">configuration</h3>
|
||||
|
||||
|
@ -78,15 +78,15 @@ variable set to "foo", and the <code>npm_package_version</code> set to "1.2.5"</
|
|||
prefix. For instance, you can view the effective <code>root</code> config by checking the
|
||||
<code>npm_config_root</code> environment variable.</p>
|
||||
|
||||
<h3 id="Special-package-json-config-hash">Special: package.json "config" hash</h3>
|
||||
<h3 id="Special-package-json-config-hash">Special: package.json "config" hash</h3>
|
||||
|
||||
<p>The package.json "config" keys are overwritten in the environment if
|
||||
<p>The package.json "config" keys are overwritten in the environment if
|
||||
there is a config param of <code><name>[@<version>]:<key></code>. For example, if
|
||||
the package.json has this:</p>
|
||||
|
||||
<pre><code>{ "name" : "foo"
|
||||
, "config" : { "port" : "8080" }
|
||||
, "scripts" : { "start" : "node server.js" } }</code></pre>
|
||||
<pre><code>{ "name" : "foo"
|
||||
, "config" : { "port" : "8080" }
|
||||
, "scripts" : { "start" : "node server.js" } }</code></pre>
|
||||
|
||||
<p>and the server.js is this:</p>
|
||||
|
||||
|
@ -100,23 +100,23 @@ the package.json has this:</p>
|
|||
|
||||
<p>Lastly, the <code>npm_lifecycle_event</code> environment variable is set to whichever
|
||||
stage of the cycle is being executed. So, you could have a single script used
|
||||
for different parts of the process which switches based on what's currently
|
||||
for different parts of the process which switches based on what's currently
|
||||
happening.</p>
|
||||
|
||||
<p>Objects are flattened following this format, so if you had
|
||||
<code>{"scripts":{"install":"foo.js"}}</code> in your package.json, then you'd see this
|
||||
<code>{"scripts":{"install":"foo.js"}}</code> in your package.json, then you'd see this
|
||||
in the script:</p>
|
||||
|
||||
<pre><code>process.env.npm_package_scripts_install === "foo.js"</code></pre>
|
||||
<pre><code>process.env.npm_package_scripts_install === "foo.js"</code></pre>
|
||||
|
||||
<h2 id="EXAMPLES">EXAMPLES</h2>
|
||||
|
||||
<p>For example, if your package.json contains this:</p>
|
||||
|
||||
<pre><code>{ "scripts" :
|
||||
{ "install" : "scripts/install.js"
|
||||
, "postinstall" : "scripts/install.js"
|
||||
, "uninstall" : "scripts/uninstall.js"
|
||||
<pre><code>{ "scripts" :
|
||||
{ "install" : "scripts/install.js"
|
||||
, "postinstall" : "scripts/install.js"
|
||||
, "uninstall" : "scripts/uninstall.js"
|
||||
}
|
||||
}</code></pre>
|
||||
|
||||
|
@ -128,10 +128,10 @@ for three different phases, it would be wise in this case to look at the
|
|||
|
||||
<p>If you want to run a make command, you can do so. This works just fine:</p>
|
||||
|
||||
<pre><code>{ "scripts" :
|
||||
{ "preinstall" : "./configure"
|
||||
, "install" : "make && make install"
|
||||
, "test" : "make test"
|
||||
<pre><code>{ "scripts" :
|
||||
{ "preinstall" : "./configure"
|
||||
, "install" : "make && make install"
|
||||
, "test" : "make test"
|
||||
}
|
||||
}</code></pre>
|
||||
|
||||
|
@ -142,7 +142,7 @@ for three different phases, it would be wise in this case to look at the
|
|||
<p>If the script exits with a code other than 0, then this will abort the
|
||||
process.</p>
|
||||
|
||||
<p>Note that these script files don't have to be nodejs or even javascript
|
||||
<p>Note that these script files don't have to be nodejs or even javascript
|
||||
programs. They just have to be some kind of executable file.</p>
|
||||
|
||||
<h2 id="HOOK-SCRIPTS">HOOK SCRIPTS</h2>
|
||||
|
@ -150,7 +150,7 @@ programs. They just have to be some kind of executable file.</p>
|
|||
<p>If you want to run a specific script at a specific lifecycle event for ALL
|
||||
packages, then you can use a hook script.</p>
|
||||
|
||||
<p>Place an executable file at <code>node_modules/.hooks/{eventname}</code>, and it'll get
|
||||
<p>Place an executable file at <code>node_modules/.hooks/{eventname}</code>, and it'll get
|
||||
run for all packages when they are going through that point in the package
|
||||
lifecycle for any packages installed in that root.</p>
|
||||
|
||||
|
@ -159,25 +159,25 @@ they are in a separate child process, with the env described above.</p>
|
|||
|
||||
<h2 id="BEST-PRACTICES">BEST PRACTICES</h2>
|
||||
|
||||
<ul><li>Don't exit with a non-zero error code unless you <em>really</em> mean it.
|
||||
<ul><li>Don't exit with a non-zero error code unless you <em>really</em> mean it.
|
||||
Except for uninstall scripts, this will cause the npm action
|
||||
to fail, and potentially be rolled back. If the failure is minor or
|
||||
only will prevent some optional features, then it's better to just
|
||||
only will prevent some optional features, then it's better to just
|
||||
print a warning and exit successfully.</li><li>Try not to use scripts to do what npm can do for you. Read through
|
||||
<code><a href="../doc/json.html">json(1)</a></code> to see all the things that you can specify and enable
|
||||
by simply describing your package appropriately. In general, this will
|
||||
lead to a more robust and consistent state.</li><li>Inspect the env to determine where to put things. For instance, if
|
||||
the <code>npm_config_binroot</code> environ is set to <code>/home/user/bin</code>, then don't
|
||||
the <code>npm_config_binroot</code> environ is set to <code>/home/user/bin</code>, then don't
|
||||
try to install executables into <code>/usr/local/bin</code>. The user probably
|
||||
set it up that way for a reason.</li><li>Don't prefix your script commands with "sudo". If root permissions are
|
||||
required for some reason, then it'll fail with that error, and the user
|
||||
set it up that way for a reason.</li><li>Don't prefix your script commands with "sudo". If root permissions are
|
||||
required for some reason, then it'll fail with that error, and the user
|
||||
will sudo the npm command in question.</li></ul>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/developers.html">developers(1)</a></li><li><a href="../doc/install.html">install(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">scripts — npm@1.1.46</p>
|
||||
<p id="footer">scripts — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
<p>Search the registry for packages matching the search terms.</p>
|
||||
|
||||
<p>If a term starts with <code>/</code>, then it's interpreted as a regular expression.
|
||||
<p>If a term starts with <code>/</code>, then it's interpreted as a regular expression.
|
||||
A trailing <code>/</code> will be ignored in this case. (Note that many regular
|
||||
expression characters must be escaped or quoted in most shells.)</p>
|
||||
|
||||
|
@ -24,7 +24,7 @@ expression characters must be escaped or quoted in most shells.)</p>
|
|||
|
||||
<ul><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li><li><a href="../doc/view.html">view(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">search — npm@1.1.46</p>
|
||||
<p id="footer">search — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -18,12 +18,12 @@
|
|||
|
||||
<pre><code>$ npm install semver
|
||||
|
||||
semver.valid('1.2.3') // true
|
||||
semver.valid('a.b.c') // false
|
||||
semver.clean(' =v1.2.3 ') // '1.2.3'
|
||||
semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
|
||||
semver.gt('1.2.3', '9.8.7') // false
|
||||
semver.lt('1.2.3', '9.8.7') // true</code></pre>
|
||||
semver.valid('1.2.3') // true
|
||||
semver.valid('a.b.c') // false
|
||||
semver.clean(' =v1.2.3 ') // '1.2.3'
|
||||
semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
|
||||
semver.gt('1.2.3', '9.8.7') // false
|
||||
semver.lt('1.2.3', '9.8.7') // true</code></pre>
|
||||
|
||||
<p>As a command-line utility:</p>
|
||||
|
||||
|
@ -52,7 +52,7 @@ multiple versions to the utility will just sort them.</code></pre>
|
|||
<ul><li>a number (Major)</li><li>a period</li><li>a number (minor)</li><li>a period</li><li>a number (patch)</li><li>OPTIONAL: a hyphen, followed by a number (build)</li><li>OPTIONAL: a collection of pretty much any non-whitespace characters
|
||||
(tag)</li></ul>
|
||||
|
||||
<p>A leading <code>"="</code> or <code>"v"</code> character is stripped off and ignored.</p>
|
||||
<p>A leading <code>"="</code> or <code>"v"</code> character is stripped off and ignored.</p>
|
||||
|
||||
<h2 id="Comparisons">Comparisons</h2>
|
||||
|
||||
|
@ -67,7 +67,7 @@ build number. <code>2.3.4-0 > 2.3.4</code></li><li>If they both have build n
|
|||
different, then take the one with the bigger build number.
|
||||
<code>2.3.4-10 > 2.3.4-9</code></li><li>If only one of them has a tag, then take the one without the tag.
|
||||
<code>2.3.4 > 2.3.4-beta</code></li><li>If they both have tags, then take the one with the lexicographically
|
||||
larger tag. <code>2.3.4-beta > 2.3.4-alpha</code></li><li>At this point, they're equal.</li></ul>
|
||||
larger tag. <code>2.3.4-beta > 2.3.4-alpha</code></li><li>At this point, they're equal.</li></ul>
|
||||
|
||||
<h2 id="Ranges">Ranges</h2>
|
||||
|
||||
|
@ -75,20 +75,20 @@ larger tag. <code>2.3.4-beta > 2.3.4-alpha</code></li><li>At this point, the
|
|||
|
||||
<ul><li><code>>1.2.3</code> Greater than a specific version.</li><li><code><1.2.3</code> Less than</li><li><code>1.2.3 - 2.3.4</code> := <code>>=1.2.3 <=2.3.4</code></li><li><code>~1.2.3</code> := <code>>=1.2.3 <1.3.0</code></li><li><code>~1.2</code> := <code>>=1.2.0 <2.0.0</code></li><li><code>~1</code> := <code>>=1.0.0 <2.0.0</code></li><li><code>1.2.x</code> := <code>>=1.2.0 <1.3.0</code></li><li><code>1.x</code> := <code>>=1.0.0 <2.0.0</code></li></ul>
|
||||
|
||||
<p>Ranges can be joined with either a space (which implies "and") or a
|
||||
<code>||</code> (which implies "or").</p>
|
||||
<p>Ranges can be joined with either a space (which implies "and") or a
|
||||
<code>||</code> (which implies "or").</p>
|
||||
|
||||
<h2 id="Functions">Functions</h2>
|
||||
|
||||
<ul><li>valid(v): Return the parsed version, or null if it's not valid.</li><li>inc(v, release): Return the version incremented by the release type
|
||||
(major, minor, patch, or build), or null if it's not valid.</li></ul>
|
||||
<ul><li>valid(v): Return the parsed version, or null if it's not valid.</li><li>inc(v, release): Return the version incremented by the release type
|
||||
(major, minor, patch, or build), or null if it's not valid.</li></ul>
|
||||
|
||||
<h3 id="Comparison">Comparison</h3>
|
||||
|
||||
<ul><li>gt(v1, v2): <code>v1 > v2</code></li><li>gte(v1, v2): <code>v1 >= v2</code></li><li>lt(v1, v2): <code>v1 < v2</code></li><li>lte(v1, v2): <code>v1 <= v2</code></li><li>eq(v1, v2): <code>v1 == v2</code> This is true if they're logically equivalent,
|
||||
even if they're not the exact same string. You already know how to
|
||||
compare strings.</li><li>neq(v1, v2): <code>v1 != v2</code> The opposite of eq.</li><li>cmp(v1, comparator, v2): Pass in a comparison string, and it'll call
|
||||
the corresponding function above. <code>"==="</code> and <code>"!=="</code> do simple
|
||||
<ul><li>gt(v1, v2): <code>v1 > v2</code></li><li>gte(v1, v2): <code>v1 >= v2</code></li><li>lt(v1, v2): <code>v1 < v2</code></li><li>lte(v1, v2): <code>v1 <= v2</code></li><li>eq(v1, v2): <code>v1 == v2</code> This is true if they're logically equivalent,
|
||||
even if they're not the exact same string. You already know how to
|
||||
compare strings.</li><li>neq(v1, v2): <code>v1 != v2</code> The opposite of eq.</li><li>cmp(v1, comparator, v2): Pass in a comparison string, and it'll call
|
||||
the corresponding function above. <code>"==="</code> and <code>"!=="</code> do simple
|
||||
string comparison, but are included for completeness. Throws if an
|
||||
invalid comparison string is provided.</li><li>compare(v1, v2): Return 0 if v1 == v2, or 1 if v1 is greater, or -1 if
|
||||
v2 is greater. Sorts in ascending order if passed to Array.sort().</li><li>rcompare(v1, v2): The reverse of compare. Sorts an array of versions
|
||||
|
@ -96,7 +96,7 @@ in descending order when passed to Array.sort().</li></ul>
|
|||
|
||||
<h3 id="Ranges">Ranges</h3>
|
||||
|
||||
<ul><li>validRange(range): Return the valid range or null if it's not valid</li><li>satisfies(version, range): Return true if the version satisfies the
|
||||
<ul><li>validRange(range): Return the valid range or null if it's not valid</li><li>satisfies(version, range): Return true if the version satisfies the
|
||||
range.</li><li>maxSatisfying(versions, range): Return the highest version in the list
|
||||
that satisfies the range, or null if none of them do.</li></ul>
|
||||
|
||||
|
@ -104,7 +104,7 @@ that satisfies the range, or null if none of them do.</li></ul>
|
|||
|
||||
<ul><li><a href="../doc/json.html">json(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">semver — npm@1.1.46</p>
|
||||
<p id="footer">semver — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,140 +14,140 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This command locks down the versions of a package's dependencies so that you can
|
||||
<p>This command locks down the versions of a package's dependencies so that you can
|
||||
control exactly which versions of each dependency will be used when your package
|
||||
is installed.</p>
|
||||
|
||||
<p>By default, "npm install" recursively installs the target's dependencies (as
|
||||
<p>By default, "npm install" recursively installs the target's dependencies (as
|
||||
specified in package.json), choosing the latest available version that satisfies
|
||||
the dependency's semver pattern. In some situations, particularly when shipping
|
||||
software where each change is tightly managed, it's desirable to fully specify
|
||||
the dependency's semver pattern. In some situations, particularly when shipping
|
||||
software where each change is tightly managed, it's desirable to fully specify
|
||||
each version of each dependency recursively so that subsequent builds and
|
||||
deploys do not inadvertently pick up newer versions of a dependency that satisfy
|
||||
the semver pattern. Specifying specific semver patterns in each dependency's
|
||||
package.json would facilitate this, but that's not always possible or desirable,
|
||||
as when another author owns the npm package. It's also possible to check
|
||||
the semver pattern. Specifying specific semver patterns in each dependency's
|
||||
package.json would facilitate this, but that's not always possible or desirable,
|
||||
as when another author owns the npm package. It's also possible to check
|
||||
dependencies directly into source control, but that may be undesirable for other
|
||||
reasons.</p>
|
||||
|
||||
<p>As an example, consider package A:</p>
|
||||
|
||||
<pre><code>{
|
||||
"name": "A",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"B": "<0.1.0"
|
||||
"name": "A",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"B": "<0.1.0"
|
||||
}
|
||||
}</code></pre>
|
||||
|
||||
<p>package B:</p>
|
||||
|
||||
<pre><code>{
|
||||
"name": "B",
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"C": "<0.1.0"
|
||||
"name": "B",
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"C": "<0.1.0"
|
||||
}
|
||||
}</code></pre>
|
||||
|
||||
<p>and package C:</p>
|
||||
|
||||
<pre><code>{
|
||||
"name": "C,
|
||||
"version": "0.0.1"
|
||||
"name": "C,
|
||||
"version": "0.0.1"
|
||||
}</code></pre>
|
||||
|
||||
<p>If these are the only versions of A, B, and C available in the registry, then
|
||||
a normal "npm install A" will install:</p>
|
||||
a normal "npm install A" will install:</p>
|
||||
|
||||
<pre><code>A@0.1.0
|
||||
`-- B@0.0.1
|
||||
`-- C@0.0.1</code></pre>
|
||||
|
||||
<p>However, if B@0.0.2 is published, then a fresh "npm install A" will install:</p>
|
||||
<p>However, if B@0.0.2 is published, then a fresh "npm install A" will install:</p>
|
||||
|
||||
<pre><code>A@0.1.0
|
||||
`-- B@0.0.2
|
||||
`-- C@0.0.1</code></pre>
|
||||
|
||||
<p>assuming the new version did not modify B's dependencies. Of course, the new
|
||||
<p>assuming the new version did not modify B's dependencies. Of course, the new
|
||||
version of B could include a new version of C and any number of new
|
||||
dependencies. If such changes are undesirable, the author of A could specify a
|
||||
dependency on B@0.0.1. However, if A's author and B's author are not the same
|
||||
person, there's no way for A's author to say that he or she does not want to
|
||||
pull in newly published versions of C when B hasn't changed at all.</p>
|
||||
dependency on B@0.0.1. However, if A's author and B's author are not the same
|
||||
person, there's no way for A's author to say that he or she does not want to
|
||||
pull in newly published versions of C when B hasn't changed at all.</p>
|
||||
|
||||
<p>In this case, A's author can run</p>
|
||||
<p>In this case, A's author can run</p>
|
||||
|
||||
<pre><code>npm shrinkwrap</code></pre>
|
||||
|
||||
<p>This generates npm-shrinkwrap.json, which will look something like this:</p>
|
||||
|
||||
<pre><code>{
|
||||
"name": "A",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"B": {
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"C": {
|
||||
"version": "0.1.0"
|
||||
"name": "A",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"B": {
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"C": {
|
||||
"version": "0.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}</code></pre>
|
||||
|
||||
<p>The shrinkwrap command has locked down the dependencies based on what's
|
||||
currently installed in node_modules. When "npm install" installs a package with
|
||||
<p>The shrinkwrap command has locked down the dependencies based on what's
|
||||
currently installed in node_modules. When "npm install" installs a package with
|
||||
a npm-shrinkwrap.json file in the package root, the shrinkwrap file (rather than
|
||||
package.json files) completely drives the installation of that package and all
|
||||
of its dependencies (recursively). So now the author publishes A@0.1.0, and
|
||||
subsequent installs of this package will use B@0.0.1 and C@0.1.0, regardless the
|
||||
dependencies and versions listed in A's, B's, and C's package.json files.</p>
|
||||
dependencies and versions listed in A's, B's, and C's package.json files.</p>
|
||||
|
||||
<h3 id="Using-shrinkwrapped-packages">Using shrinkwrapped packages</h3>
|
||||
|
||||
<p>Using a shrinkwrapped package is no different than using any other package: you
|
||||
can "npm install" it by hand, or add a dependency to your package.json file and
|
||||
"npm install" it.</p>
|
||||
can "npm install" it by hand, or add a dependency to your package.json file and
|
||||
"npm install" it.</p>
|
||||
|
||||
<h3 id="Building-shrinkwrapped-packages">Building shrinkwrapped packages</h3>
|
||||
|
||||
<p>To shrinkwrap an existing package:</p>
|
||||
|
||||
<ol><li>Run "npm install" in the package root to install the current versions of all
|
||||
dependencies.</li><li>Validate that the package works as expected with these versions.</li><li>Run "npm shrinkwrap", add npm-shrinkwrap.json to git, and publish your
|
||||
<ol><li>Run "npm install" in the package root to install the current versions of all
|
||||
dependencies.</li><li>Validate that the package works as expected with these versions.</li><li>Run "npm shrinkwrap", add npm-shrinkwrap.json to git, and publish your
|
||||
package.</li></ol>
|
||||
|
||||
<p>To add or update a dependency in a shrinkwrapped package:</p>
|
||||
|
||||
<ol><li>Run "npm install" in the package root to install the current versions of all
|
||||
dependencies.</li><li>Add or update dependencies. "npm install" each new or updated package
|
||||
<ol><li>Run "npm install" in the package root to install the current versions of all
|
||||
dependencies.</li><li>Add or update dependencies. "npm install" each new or updated package
|
||||
individually and then update package.json. Note that they must be
|
||||
explicitly named in order to be installed: running <code>npm install</code> with
|
||||
no arguments will merely reproduce the existing shrinkwrap.</li><li>Validate that the package works as expected with the new dependencies.</li><li>Run "npm shrinkwrap", commit the new npm-shrinkwrap.json, and publish your
|
||||
no arguments will merely reproduce the existing shrinkwrap.</li><li>Validate that the package works as expected with the new dependencies.</li><li>Run "npm shrinkwrap", commit the new npm-shrinkwrap.json, and publish your
|
||||
package.</li></ol>
|
||||
|
||||
<p>You can use <a href="../doc/outdated.html">outdated(1)</a> to view dependencies with newer versions available.</p>
|
||||
|
||||
<h3 id="Other-Notes">Other Notes</h3>
|
||||
|
||||
<p>Since "npm shrinkwrap" uses the locally installed packages to construct the
|
||||
shrinkwrap file, devDependencies will be included if and only if you've
|
||||
<p>Since "npm shrinkwrap" uses the locally installed packages to construct the
|
||||
shrinkwrap file, devDependencies will be included if and only if you've
|
||||
installed them already when you make the shrinkwrap.</p>
|
||||
|
||||
<p>A shrinkwrap file must be consistent with the package's package.json file. "npm
|
||||
shrinkwrap" will fail if required dependencies are not already installed, since
|
||||
that would result in a shrinkwrap that wouldn't actually work. Similarly, the
|
||||
<p>A shrinkwrap file must be consistent with the package's package.json file. "npm
|
||||
shrinkwrap" will fail if required dependencies are not already installed, since
|
||||
that would result in a shrinkwrap that wouldn't actually work. Similarly, the
|
||||
command will fail if there are extraneous packages (not referenced by
|
||||
package.json), since that would indicate that package.json is not correct.</p>
|
||||
|
||||
<p>If shrinkwrapped package A depends on shrinkwrapped package B, B's shrinkwrap
|
||||
will not be used as part of the installation of A. However, because A's
|
||||
<p>If shrinkwrapped package A depends on shrinkwrapped package B, B's shrinkwrap
|
||||
will not be used as part of the installation of A. However, because A's
|
||||
shrinkwrap is constructed from a valid installation of B and recursively
|
||||
specifies all dependencies, the contents of B's shrinkwrap will implicitly be
|
||||
included in A's shrinkwrap.</p>
|
||||
specifies all dependencies, the contents of B's shrinkwrap will implicitly be
|
||||
included in A's shrinkwrap.</p>
|
||||
|
||||
<h3 id="Caveats">Caveats</h3>
|
||||
|
||||
|
@ -155,7 +155,7 @@ included in A's shrinkwrap.</p>
|
|||
While discouraged, a package author can republish an existing version of a
|
||||
package, causing shrinkwrapped packages using that version to pick up different
|
||||
code than they were before. If you want to avoid any risk that a byzantine
|
||||
author replaces a package you're using with code that breaks your application,
|
||||
author replaces a package you're using with code that breaks your application,
|
||||
you could modify the shrinkwrap file to use git URL references rather than
|
||||
version numbers so that npm always fetches all packages from git.</p>
|
||||
|
||||
|
@ -169,7 +169,7 @@ versions.</p>
|
|||
|
||||
<ul><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/json.html">json(1)</a></li><li><a href="../doc/list.html">list(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">shrinkwrap — npm@1.1.46</p>
|
||||
<p id="footer">shrinkwrap — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -15,18 +15,18 @@ npm unstar <pkgname> [<pkg>, ...]</code></pre>
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>"Starring" a package means that you have some interest in it. It's
|
||||
<p>"Starring" a package means that you have some interest in it. It's
|
||||
a vaguely positive way to show that you care.</p>
|
||||
|
||||
<p>"Unstarring" is the same thing, but in reverse.</p>
|
||||
<p>"Unstarring" is the same thing, but in reverse.</p>
|
||||
|
||||
<p>It's a boolean thing. Starring repeatedly has no additional effect.</p>
|
||||
<p>It's a boolean thing. Starring repeatedly has no additional effect.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../doc/view.html">view(1)</a></li><li><a href="../doc/whoami.html">whoami(1)</a></li><li><a href="../doc/adduser.html">adduser(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">star — npm@1.1.46</p>
|
||||
<p id="footer">star — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,13 +14,13 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This runs a package's "start" script, if one was provided.</p>
|
||||
<p>This runs a package's "start" script, if one was provided.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">start — npm@1.1.46</p>
|
||||
<p id="footer">start — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,13 +14,13 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This runs a package's "stop" script, if one was provided.</p>
|
||||
<p>This runs a package's "stop" script, if one was provided.</p>
|
||||
|
||||
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
||||
|
||||
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/test.html">test(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">stop — npm@1.1.46</p>
|
||||
<p id="footer">stop — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
description, then this command will add it as a git submodule at
|
||||
<code>node_modules/<pkg name></code>.</p>
|
||||
|
||||
<p>This is a convenience only. From then on, it's up to you to manage
|
||||
<p>This is a convenience only. From then on, it's up to you to manage
|
||||
updates by using the appropriate git commands. npm will stubbornly
|
||||
refuse to update, modify, or remove anything with a <code>.git</code> subfolder
|
||||
in it.</p>
|
||||
|
@ -33,7 +33,7 @@ dependencies into the submodule folder.</p>
|
|||
|
||||
<ul><li><a href="../doc/json.html">json(1)</a></li><li>git help submodule</li></ul>
|
||||
</div>
|
||||
<p id="footer">submodule — npm@1.1.46</p>
|
||||
<p id="footer">submodule — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
<ul><li><a href="../doc/publish.html">publish(1)</a></li><li><a href="../doc/registry.html">registry(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">tag — npm@1.1.46</p>
|
||||
<p id="footer">tag — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
||||
|
||||
<p>This runs a package's "test" script, if one was provided.</p>
|
||||
<p>This runs a package's "test" script, if one was provided.</p>
|
||||
|
||||
<p>To run tests as a condition of installation, set the <code>npat</code> config to
|
||||
true.</p>
|
||||
|
@ -23,7 +23,7 @@ true.</p>
|
|||
|
||||
<ul><li><a href="../doc/run-script.html">run-script(1)</a></li><li><a href="../doc/scripts.html">scripts(1)</a></li><li><a href="../doc/start.html">start(1)</a></li><li><a href="../doc/restart.html">restart(1)</a></li><li><a href="../doc/stop.html">stop(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">test — npm@1.1.46</p>
|
||||
<p id="footer">test — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
|
@ -22,7 +22,7 @@ on its behalf.</p>
|
|||
|
||||
<ul><li><a href="../doc/prune.html">prune(1)</a></li><li><a href="../doc/install.html">install(1)</a></li><li><a href="../doc/folders.html">folders(1)</a></li><li><a href="../doc/config.html">config(1)</a></li></ul>
|
||||
</div>
|
||||
<p id="footer">uninstall — npm@1.1.46</p>
|
||||
<p id="footer">uninstall — npm@1.1.49</p>
|
||||
<script>
|
||||
;(function () {
|
||||
var wrapper = document.getElementById("wrapper")
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue