diff options
Diffstat (limited to 'deps/npm/man/man7/npm-developers.7')
-rw-r--r-- | deps/npm/man/man7/npm-developers.7 | 335 |
1 files changed, 335 insertions, 0 deletions
diff --git a/deps/npm/man/man7/npm-developers.7 b/deps/npm/man/man7/npm-developers.7 new file mode 100644 index 000000000..619e8ecb1 --- /dev/null +++ b/deps/npm/man/man7/npm-developers.7 @@ -0,0 +1,335 @@ +.\" Generated with Ronnjs 0.3.8 +.\" http://github.com/kapouer/ronnjs/ +. +.TH "NPM\-DEVELOPERS" "7" "July 2013" "" "" +. +.SH "NAME" +\fBnpm-developers\fR \-\- Developer Guide +. +.SH "DESCRIPTION" +So, you\'ve decided to use npm to develop (and maybe publish/deploy) +your project\. +. +.P +Fantastic! +. +.P +There are a few things that you need to do above the simple steps +that your users will do to install your program\. +. +.SH "About These Documents" +These are man pages\. If you install npm, you should be able to +then do \fBman npm\-thing\fR to get the documentation on a particular +topic, or \fBnpm help thing\fR to see the same information\. +. +.SH "What is a " +A package is: +. +.IP "\(bu" 4 +a) a folder containing a program described by a package\.json file +. +.IP "\(bu" 4 +b) a gzipped tarball containing (a) +. +.IP "\(bu" 4 +c) a url that resolves to (b) +. +.IP "\(bu" 4 +d) a \fB<name>@<version>\fR that is published on the registry with (c) +. +.IP "\(bu" 4 +e) a \fB<name>@<tag>\fR that points to (d) +. +.IP "\(bu" 4 +f) a \fB<name>\fR that has a "latest" tag satisfying (e) +. +.IP "\(bu" 4 +g) a \fBgit\fR url that, when cloned, results in (a)\. +. +.IP "" 0 +. +.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 +perhaps if you also want to be able to easily install it elsewhere +after packing it up into a tarball (b)\. +. +.P +Git urls can be of the form: +. +.IP "" 4 +. +.nf +git://github\.com/user/project\.git#commit\-ish +git+ssh://user@hostname:project\.git#commit\-ish +git+http://user@hostname/project/blah\.git#commit\-ish +git+https://user@hostname/project/blah\.git#commit\-ish +. +.fi +. +.IP "" 0 +. +.P +The \fBcommit\-ish\fR can be any tag, sha, or branch which can be supplied as +an argument to \fBgit checkout\fR\|\. The default is \fBmaster\fR\|\. +. +.SH "The package\.json File" +You need to have a \fBpackage\.json\fR file in the root of your project to do +much of anything with npm\. That is basically the whole interface\. +. +.P +npm help See \fBpackage\.json\fR for details about what goes in that file\. At the very +least, you need: +. +.IP "\(bu" 4 +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\. +. +.IP +It does not necessarily need to match your github repository name\. +. +.IP +So, \fBnode\-foo\fR and \fBbar\-js\fR are bad names\. \fBfoo\fR or \fBbar\fR are better\. +. +.IP "\(bu" 4 +version: +A semver\-compatible version\. +. +.IP "\(bu" 4 +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 +functionality that you depend on\. Be explicit\. +. +.IP "\(bu" 4 +author: +Take some credit\. +. +.IP "\(bu" 4 +scripts: +If you have a special compilation or installation script, then you +should put it in the \fBscripts\fR hash\. You should definitely have at +least a basic smoke\-test command as the "scripts\.test" field\. +npm help See npm\-scripts\. +. +.IP "\(bu" 4 +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\. +. +.IP "\(bu" 4 +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\. +. +.IP "" 0 +. +.P +You can use \fBnpm init\fR in the root of your package in order to get you +npm help started with a pretty basic package\.json file\. See \fBnpm\-init\fR for +more info\. +. +.SH "Keeping files " +Use a \fB\|\.npmignore\fR file to keep stuff out of your package\. If there\'s +no \fB\|\.npmignore\fR file, but there \fIis\fR a \fB\|\.gitignore\fR file, then npm will +ignore the stuff matched by the \fB\|\.gitignore\fR file\. If you \fIwant\fR to +include something that is excluded by your \fB\|\.gitignore\fR file, you can +create an empty \fB\|\.npmignore\fR file to override it\. +. +.P +By default, the following paths and files are ignored, so there\'s no +need to add them to \fB\|\.npmignore\fR explicitly: +. +.IP "\(bu" 4 +\fB\|\.*\.swp\fR +. +.IP "\(bu" 4 +\fB\|\._*\fR +. +.IP "\(bu" 4 +\fB\|\.DS_Store\fR +. +.IP "\(bu" 4 +\fB\|\.git\fR +. +.IP "\(bu" 4 +\fB\|\.hg\fR +. +.IP "\(bu" 4 +\fB\|\.lock\-wscript\fR +. +.IP "\(bu" 4 +\fB\|\.svn\fR +. +.IP "\(bu" 4 +\fB\|\.wafpickle\-*\fR +. +.IP "\(bu" 4 +\fBCVS\fR +. +.IP "\(bu" 4 +\fBnpm\-debug\.log\fR +. +.IP "" 0 +. +.P +Additionally, everything in \fBnode_modules\fR is ignored, except for +bundled dependencies\. npm automatically handles this for you, so don\'t +bother adding \fBnode_modules\fR to \fB\|\.npmignore\fR\|\. +. +.P +The following paths and files are never ignored, so adding them to \fB\|\.npmignore\fR is pointless: +. +.IP "\(bu" 4 +\fBpackage\.json\fR +. +.IP "\(bu" 4 +\fBREADME\.*\fR +. +.IP "" 0 +. +.SH "Link Packages" +\fBnpm link\fR is designed to install a development package and see the +changes in real time without having to keep re\-installing it\. (You do +need to either re\-link or \fBnpm rebuild \-g\fR to update compiled packages, +of course\.) +. +.P +npm help More info at \fBnpm\-link\fR\|\. +. +.SH "Before Publishing: Make Sure Your Package Installs and Works" +\fBThis is important\.\fR +. +.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 +In the root of your package, do this: +. +.IP "" 4 +. +.nf +npm install \. \-g +. +.fi +. +.IP "" 0 +. +.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: +. +.IP "" 4 +. +.nf +npm link +. +.fi +. +.IP "" 0 +. +.P +Use \fBnpm ls \-g\fR to see if it\'s there\. +. +.P +To test a local install, go into some other folder, and then do: +. +.IP "" 4 +. +.nf +cd \.\./some\-other\-folder +npm install \.\./my\-package +. +.fi +. +.IP "" 0 +. +.P +to install it locally into the node_modules folder in that other place\. +. +.P +Then go into the node\-repl, and try using require("my\-thing") to +bring in your module\'s main module\. +. +.SH "Create a User Account" +Create a user with the adduser command\. It works like this: +. +.IP "" 4 +. +.nf +npm adduser +. +.fi +. +.IP "" 0 +. +.P +and then follow the prompts\. +. +.P +npm help This is documented better in npm\-adduser\. +. +.SH "Publish your package" +This part\'s easy\. IN the root of your folder, do this: +. +.IP "" 4 +. +.nf +npm publish +. +.fi +. +.IP "" 0 +. +.P +You can give publish a url to a tarball, or a filename of a tarball, +or a path to a folder\. +. +.P +Note that pretty much \fBeverything in that folder will be exposed\fR +by default\. So, if you have secret stuff in there, use a \fB\|\.npmignore\fR file to list out the globs to ignore, or publish +from a fresh checkout\. +. +.SH "Brag about it" +Send emails, write blogs, blab in IRC\. +. +.P +Tell the world how easy it is to install your program! +. +.SH "SEE ALSO" +. +.IP "\(bu" 4 +npm help faq +. +.IP "\(bu" 4 +npm help npm +. +.IP "\(bu" 4 +npm help init +. +.IP "\(bu" 4 +npm help package\.json +. +.IP "\(bu" 4 +npm help scripts +. +.IP "\(bu" 4 +npm help publish +. +.IP "\(bu" 4 +npm help adduser +. +.IP "\(bu" 4 +npm help registry +. +.IP "" 0 + |