关于npm:译npm-developer-guide

10次阅读

共计 3016 个字符,预计需要花费 8 分钟才能阅读完成。

引子

在 npm Getting started 之后,发现了 npm-developers 这篇文档,介绍从开始、本地测试、打包到公布的一个绝对残缺的流程。感觉是 Getting started 的一个补充,于是就把篇文档翻译成中文,加深下印象。

原文:npm-developers。

  • Origin
  • My GitHub

简述

所以,你曾经打算应用 npm 来开发(并且可能公布或部署)你的我的项目了。

太棒了!

在你的用户安装程序的简略步骤之上,您须要做一些事件。

对于这些文档

这些是手册页。如果你装置了 npm,你应该能够在 npm 手册中找到特定主题的文档,或者通过 npm 帮忙来获取雷同的信息。

一个 package 是什么

一个 package 是:

1. 一个蕴含了形容程序的 package.json 文件的文件夹。2. 蕴含有一个 gzip 压缩的压缩包(在 1 的根底上)。3. 一个解析为(2)中包的 url。4. 一个曾经在登记处公布的 <name>@<version>(在 3 的根底上)。5. 一个指向的(4)的 <name>@<tag>。6. 一个称心的有“latest”标签的 <name>(在 5 的根底上)。7. 一个克隆的 git 仓库链接,指向(1)中的文件夹。

即便你素来没有公布过你的包,如果你只是想写一个 node 我的项目,或者在打包成压缩包后,你想在其它中央能很容易的装置,你依然能够从应用 npm 中受益匪浅。

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 能够是任何的 tag、sha 或者可能提供给 git checkout 作为参数的分支名。默认值是 master

package.json 文件

你须要在我的项目根目录下有个 package.json 文件,这样能力用 npm 做很多事件。这基本上就是整个交接口。

具体的文件信息,可见 package.json。你至多须要晓得的有:

  • name:这个应该是标识你我的项目的字符串。请不要应用 name 来指明这个我的项目是基于 node 或者应用了 JavaScript。你能够用“engines”字段来表明你我的项目,须要什么版本的 node(或者其它什么),它简直假如是 JavaScript。
    也不须要匹配你的 github 库的名称。
    因而,node-foobar-js 是不好的命名。foobar 的命名会更好。
  • version:semver 兼容版本。
  • engines:指明你的我的项目基于那个版本 node(或其它什么)运行。node API 扭转很频繁,你依赖的版本,可能有一些 bug 或新的性能。明确的指出来。
  • author:作者。
  • scripts:如果你有特定的编译或装置脚本,那么你应该把它放到 scripts 对象中。你应该至多有一个根本的 smoke test 命令作为“scripts.test”字段。见 npm-scripts。
  • main:如果你有一个独自的模块作为你程序的入口(就像“foo”包通过 requre(“foo”) 获取),那么你须要在“main”字段指明。
  • directories:这是一个映射名称到文件夹的对象。最好包含“lib”和“doc”,然而如果你应用“man”指定一个满是手册页的文件夹,它们将会像装置这些手册页一样进行装置。

你能够在你我的项目的根目录下,应用 npm init 初始化根本的 package.json 文件。更多信息见 npm-init。

过滤文件

应用 .npmignore 文件排除包中的一些货色。如果没有 .npmignore 文件,但有 .gitignore 文件,那么 npm 将疏忽该文件中匹配到的货色。如果你想蕴含你 .gitignore 文件中排除的文件,你能够创立一个空的 .npmignore 文件笼罩它。与 git 一样,npm 在包的所有子目录中查找 .npmignore.gitignore 文件,而不仅仅是根目录。

.npmignore.gitignore 遵循雷同的规定模式:

  • # 开始的行会被疏忽。
  • 规范的全局模式无效。
  • 你能够应用正斜杠完结模式 / 指定目录。
  • 你能够通过应用感叹号!来否定一个模式。

默认的,上面的门路和文件会被疏忽,因而不须要额定将这些增加到 .npmignore 中:

  • .*.swp
  • ._*
  • .DS_Store
  • .git
  • .hg
  • .npmrc
  • .lock-wscript
  • .svn
  • .wafpickle-*
  • config.gypi
  • CVS
  • npm-debug.log

此外,node_module 中所有的货色会被疏忽,除了绑定的依赖。npm 会主动为你解决这个。所以不用将 node_module 退出到 .npmignore 中。

上面的门路和文件绝不会被疏忽,所以把这些退出到 .npmignore 中没有意义:

  • package.json
  • README (and its variants)
  • CHANGELOG (and its variants)
  • LICENSE / LICENCE

如果思考到我的项目的构造,你发现 .npmignore 是一个保护难题,那么能够尝试填充 package.json 文件的 files 属性,该属性是一个数组,外面是应该蕴含在包中的文件或目录名。有时候白名单比黑名单更容易治理。

测试你的 .npmignore 或文件配置是否无效

如果你想要再次确认,当公布时,你想要的都蕴含在包中,你能够本地运行 npm pack 命令,这个命令将在工作目录生成一个压缩包,公布包也是应用这种形式。

Link 包

npm link 旨在装置一个开发包并实时查看更改,而不必再次重新安装。(当然,你须要从新 link 或 npm rebuidl -g 来更新编译的包。)

实际操作见本地包调试:npm link,文档信息见 npm-link。

公布之前:确保你的包可失常装置运行

这很重要。

如果你的包不能本地装置,你试图公布它,将会有问题。或者更蹩脚的是,你能公布,但公布了一个破损或者无意义的包。所以不要这样做。

在你包的根目录下,执行上面命令:

npm install . -g

这将会通知你是否可行。如果你更喜爱创立一个 link 的包,指向你的工作目录,那么这么做:

npm link

应用 npm ls -g 查看是否存在。

测试本地装置,到另外一个文件夹下,执行:

cd ../some-other-folder
npm install ../my-package

在其它中央,本地装置到 node_module 文件夹下。

而后进入 node-repl,尝试应用 require(“my-thing”)引入你模块的主模块。

创立一个用户账户

通过 adducer 命令创立一个用户。像这样运行:

npm adduser

之后就依据提醒进行。具体见 npm-adduser。

公布你的包

这部分很简略。到你文件夹根目录下,执行这个:

npm publish

你能够给一个压缩包,一个压缩包的文件名,或者一个文件夹的门路公布一个 url。

请留神,默认状况下, 文件夹外面简直所有的内容将会被公开 。所以,如果你在外面有机密的货色,应用一个 .npmignore 文件列出要全局疏忽的货色,或者从一个新的 checkout 公布。

参考资料

  • npm-developers
正文完
 0