非常教程

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.gypi
  • CVS
  • npm-debug.log

此外,node_modules除了捆绑的依赖项外,所有内容都被忽略。NPM自动为您处理此,所以也懒得添加node_modules.npmignore

以下路径和文件永远不会被忽略,因此添加它们 .npmignore是没有意义的:

  • package.json
  • README (及其变种)
  • CHANGELOG (及其变种)
  • LICENSE / LICENCE

如果给定项目的结构,您会发现.npmignore维护问题,您可能会尝试填充files属性package.json,该属性是应包含在程序包中的文件或目录名称数组。有时白名单比黑名单更容易管理。

测试您的.npmignorefiles配置是否有效

如果要在发布时仔细检查包中是否只包含您想要的文件,可以在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。

告诉全世界安装程序是多么容易!

npm

npm 是 JavaScript 的包管理器和世界上最大的软件注册表

npm目录

1.入门
2.私有包
3.故障排除
4.使用npm
5.CLI命令