npm参考手册
使用npm
NPM-开发
描述
因此,您决定使用npm开发(并可能发布/部署)您的项目。
太棒了!
在您的用户安装程序的简单步骤之上,您需要做一些事情。
关于这些文件
这些是手册页。如果您安装了npm,那么您应该可以man npm-thing获取有关特定主题的文档,或者npm help thing查看相同的信息。
什么是 package
包裹是:
- a)包含package.json文件描述的程序的文件夹
- b)包含(a)的压缩的tarball
- c)解析为(b)的网址
- d)
<name>@<version>在(c)登记处公布的a - e)
<name>@<tag>指向(d) - f)
<name>具有满足(e)的“最新”标签的a - g)
git克隆时产生(ur )的网址。
即使你从未发布过你的软件包,如果你只是想编写一个节点程序(a),你仍然可以获得使用npm的很多好处,也许你还希望能够在打包之后轻松地将它安装在别处。进入tarball(b)。
Git网址可以是以下形式:
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
的commit-ish可以是任何标签,沙,或分支可以作为参数被供给git checkout。默认是master。
package.json文件
你需要package.json在项目的根目录中有一个文件,用npm做很多事情。这基本上就是整个界面。
有关package.json该文件中的内容的详细信息,请参阅。至少,你需要:
- name:这应该是一个标识您的项目的字符串。请不要使用该名称来指定它在节点上运行,或者使用JavaScript。您可以使用“engines”字段显式声明程序所需的节点(或其他任何)的版本,并且很好地假设它是JavaScript。
它不一定需要匹配您的github存储库名称。
所以,
node-foo并且bar-js是坏名字。foo或者bar更好。 - version:与semver兼容的版本。
- 引擎:指定运行程序的节点(或其他任何)的版本。节点API发生了很大变化,可能存在您依赖的错误或新功能。要明确。
- 作者:取一些功劳。
- 脚本:如果您有特殊的编译或安装脚本,那么您应该将它放在
scripts对象中。你绝对应该至少有一个基本的smoke-test命令作为“scripts.test”字段。请参阅npm-scripts。 - main:如果你有一个模块作为你的程序的入口点(就像“foo”包给你的require(“foo”)),那么你需要在“main”字段中指定。
- 目录:这是将名称映射到文件夹的对象。要包含的最好的是“lib”和“doc”,但是如果你使用“man”来指定一个充满手册页的文件夹,它们就会像这些一样安装。
您可以npm init在包的根目录中使用,以便开始使用非常基本的package.json文件。有关详情npm-init,请参阅。
保存文件出你的包
使用.npmignore文件将东西从包中取出。如果没有.npmignore文件,但有是一个.gitignore文件,然后将NPM忽略由相匹配的东西.gitignore文件。如果要包含.gitignore文件排除的内容,可以创建一个空.npmignore文件来覆盖它。比如git,在包的所有子目录中npm查找.npmignore和查找.gitignore文件,而不仅仅是根目录。
.npmignore文件遵循相同的模式规则 的.gitignore文件:
- 以空格行或以行开头的行将
#被忽略。 - 标准的glob模式有效。
- 您可以使用正斜杠结束模式
/以指定目录。 - 您可以通过用感叹号启动它来否定模式
!。
默认情况下,将忽略以下路径和文件,因此无需.npmignore显式添加它们:
.*.swp._*.DS_Store.git.hg.npmrc.lock-wscript.svn.wafpickle-*config.gypiCVSnpm-debug.log
此外,node_modules除了捆绑的依赖项外,所有内容都被忽略。NPM自动为您处理此,所以也懒得添加node_modules到.npmignore。
以下路径和文件永远不会被忽略,因此添加它们 .npmignore是没有意义的:
package.json-
README(及其变种) -
CHANGELOG(及其变种) -
LICENSE/LICENCE
如果给定项目的结构,您会发现.npmignore维护问题,您可能会尝试填充files属性package.json,该属性是应包含在程序包中的文件或目录名称数组。有时白名单比黑名单更容易管理。
测试您的.npmignore或files配置是否有效
如果要在发布时仔细检查包中是否只包含您想要的文件,可以在npm pack本地运行命令,这将在工作目录中生成tarball,就像发布时一样。
链接包
npm link旨在安装开发包并实时查看更改,而无需继续重新安装。(当然,您需要重新链接或npm rebuild -g更新已编译的包。)
更多信息在npm-link。
发布之前:确保您的包安装和工作
这个很重要。
如果您无法在本地安装它,则在尝试发布它时会遇到问题。或者,更糟糕的是,你将能够发布它,但你将发布一个破碎或毫无意义的包。所以不要这样做。
在包的根目录中,执行以下操作:
npm install . -g
那会告诉你它正在发挥作用。如果您只想创建指向工作目录的符号链接包,请执行以下操作:
npm link
使用npm ls -g,看看它的存在。
要测试本地安装,请进入其他文件夹,然后执行以下操作:
cd ../some-other-folder
npm install ../my-package
将其本地安装到该位置的node_modules文件夹中。
然后进入node-repl,尝试使用require(“my-thing”)来引入模块的主模块。
创建用户帐户
使用adduser命令创建用户。它的工作原理如下:
npm adduser
然后按照提示操作。
这在 npm-adduser 中有更好的记录。
发布您的包裹
这部分很简单。在文件夹的根目录中,执行以下操作:
npm publish
您可以发布 tar 包的 tarl,tar 包的文件名或文件夹的路径。
请注意, 默认情况下,该文件夹中的所有内容都会公开。所以,如果你有秘密的东西,使用一个 .npmignore文件列出要忽略的globs,或从一个新的结帐发布。
吹嘘它
在 IRC 中发送电子邮件,撰写博客,blab。
告诉全世界安装程序是多么容易!
加载中,请稍侯......