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
,该属性是应包含在程序包中的文件或目录名称数组。有时白名单比黑名单更容易管理。
测试您的.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。
告诉全世界安装程序是多么容易!
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com