如何使用 npm 在 Linux 服务器上构建和发布 Node.js 包

介绍

Node.js是一个流行的JavaScript平台,用于服务器侧编程,允许您快速构建和运行Web应用程序。

在本指南中,我们将讨论如何使用npm,一个Node.js包管理系统. 在过去的指南中,我们讨论了 如何在Ubuntu 14.04服务器上安装Node.js

现在,我们将涵盖如何修改配置设置,创建和发布包,以及如何与 npm 包库进行交互。

管理配置设置

要控制npm的行为,你可以调整该工具的设置,有相当多的方法构建在npm做到这一点。

列出当前配置设置

首先,让我们看看我们的当前设置是什么?我们可以通过键入这样做:

1npm config ls

1; cli configs
2registry = "https://registry.npmjs.org/"
3user-agent = "npm/1.4.9 node/v0.11.13 linux x64"
4
5; node bin location = /home/demouser/.nvm/v0.11.13/bin/node
6; cwd = /home/demouser/projects/test_package
7; HOME = /home/demouser
8; 'npm config ls -l' to show all defaults.

此设置列表是从各种不同的位置抽取的,包括当前的操作环境. 它是在执行命令时构建的. 您可以通过通过-g旗进行测试。

npm config ls -g
; cli configs
global = true
registry = "https://registry.npmjs.org/"
user-agent = "npm/1.4.9 node/v0.11.13 linux x64"
. . .

目前,npm 没有从配置文件中提取任何信息,因为没有创建的配置文件,它只是从其环境(当前目录等)收集信息,并使用应用程序的默认设置。

虽然我们没有显示大多数默认的命令,但为了获得更广泛的信息,我们将不得不通过-l旗:

1npm config ls -l

 1; cli configs
 2long = true
 3registry = "https://registry.npmjs.org/"
 4user-agent = "npm/1.4.9 node/v0.11.13 linux x64"
 5
 6; default values
 7always-auth = false
 8bin-links = true
 9browser = null
10ca = null
11. . .

获取和设定特定价值观

正如你所看到的,信息的关键值对有很多,这就是我们如何在npm内使用配置值的方式,例如,如果我们想看到编辑器键的当前值,我们可以键入:

1npm config get editor

1vi

如果我们想改变这个值,我们可以轻松地通过输入这样的东西:

npm config set editor vim

它会将默认值(vi)与我们的新值(vim)叠加,它也会创建我们的配置文件,因为它是我们的第一个自定义值。

我们的配置文件写在哪里?为什么我们不问npm:

1npm config get userconfig

1/home/demouser/.npmrc

如果我们使用config set -g语法设置值,它们将被写入我们的globalconfig文件中。

1npm config get globalconfig

1/home/demouser/.nvm/v0.11.13/etc/npmrc

您的文件位置将取决于您安装 Node.js 的方法。

对于 does 存在的文件,如果你想用你的编辑器编辑它,你可以通过键入这样做:

1npm config edit

如果文件尚未创建,则此功能不会起作用(手动或通过在 npm 中设置非默认值)。

您还可以通过使用此语法为特定命令设置不同的配置选项:

npm subcommand --key value

其他引导值的区域是项目本身的 package.json 文件和环境变量。

使用 npm 创建包

我们了解了一些关于如何使用 npm 作为标准包管理器来获取和管理应用程序需要的依赖和包,但是,您也可以使用 npm 来帮助您包装和共享应用程序或库。

npm 帮助的第一件事情之一是为您的项目生成 package.json 文件. 在我们开始之前,您应该看看帮助页面,以便您熟悉您将被问及的领域:

1npm help json

一旦你在你的应用目录中,你可以开始:

1cd ~/projects/test_package
2npm init

这将提示您需要为您构建一个包文件的信息. 它将需要一些环境提示来填充默认值. 您的会话可能看起来像这样:

 1name: (test_package) 
 2version: (0.0.0) 0.0.1
 3description: A test package
 4entry point: (index.js) index.js
 5test command: echo "test"
 6git repository: http://fake.git.repo.com
 7keywords: test
 8author: me
 9license: (ISC) GLP
10About to write to /home/demouser/projects/test_package/package.json:
11
12{
13  "name": "test_package",
14  "version": "0.0.1",
15  "description": "A test package",
16  "main": "index.js",
17  "dependencies": {
18    "express": "^4.2.0"
19  },
20  "devDependencies": {},
21  "scripts": {
22    "test": "echo \"test\""
23  },
24  "keywords": [
25    "test"
26  ],
27  "author": "me",
28  "license": "GLP"
29}
30
31Is this ok? (yes) yes

如果您在生成您的 package.json 文件后需要安装额外的依赖,则应使用 --save 旗帜安装它们,该旗帜将更新您的 package.json 文件中的依赖列表。

如果您的软件包需要非常具体的版本,您可以使用shrinkwrap子命令. 通常,软件包文件将当前的软件包设置为构建所需的最低可行版本。

您可以创建此文件与:

1npm shrinkwrap

这将生成名为npm-shrinkwrap.json的文件,为每个依赖情况提供非常详细的包信息,并且以回复的方式。

通过 npm 与 npm 网站互动

npm 项目在 npmjs.org维护一个包的网站。您可以通过 npm 命令行工具实际上与此网站进行交互。

首先,如果您尚未使用帐户登录,您可以通过键入 within npm 界面这样做:

1npm adduser

您将被要求选择一个用户名,密码和电子邮件地址. 这些将被发布到网站上,就像您正在通过Web浏览器注册一样。

如果您检查配置,您应该看到您的新帐户详细信息:

1npm config ls

1. . .
2; userconfig /home/demouser/.npmrc
3editor = "vim"
4email = "[email protected]"
5username = "demouser"
6. . .

发布你的包

当您创建了一个您希望与更大的 Node.js 社区共享的包时,npm 网站是一个很好的开始。

幸运的是,npm提供了一些帮助功能,可以让你开始。

如果您在您的包目录中,您可以简单地键入:

1npm publish

这将推动您的包到 npm 网站上。此操作的成功取决于您的包具有独特的名称和版本号码. 如果您去那里搜索您的包,它应该像任何其他 Node.js 包一样列出。

标签您的上传

您可以使用标记子命令标记您的包的特定版本,这些可以用来代替版本号在安装和依赖规格中。

默认情况下,npm 会为您发布的任何软件包添加一个标签,标签为最近

1npm config get tag

1latest

这意味着您可以通过键入如下内容来具体要求最新版本:

1npm install package@latest

如果您想为您的一个包/版本组合添加一个额外的标签,您可以输入类似的内容:

npm tag package@version tag_name

这将允许您现在参考您用tag_name标记的版本,而不是版本号。

包裹的所有权变更

默认情况下,当您发布一个包时,您将获得该包的所有权。

您可以通过键入来验证:

npm owner ls package_name
demouser <[email protected]>

如果您想将额外的人员添加到项目中,从而允许他们进行更改,您可以发出这样的命令:

npm owner add username

您也可以做相反的操作,并删除用户的权限,如下:

npm owner rm username

在此写作时,一个包的所有者都有相同的权利,因此无法分配更精细的访问控制。

删除和删除包裹

有时,您的软件包发生了重要的更改,因此需要删除旧版本,例如,可能存在安全问题。

借助 npm,您可以通过键入这样的东西轻松地删除您的软件包的版本或版本范围:

npm deprecate package_name@"version_or_rangedeprecation_message_to_users"

您选择包含的消息将显示为任何安装您已标记的软件包版本的用户的警告。

如果你想把你的包完全放下,你可以这样做,不发布它. 你可能不应该这样做,如果你的包已经被其他人使用了,npm鼓励你放弃包,而不是。

重要的是要注意的是,即使你不发布一个包,并且它从网站上删除,它持有的名称/版本组合永远无法重复使用。

未出版你的作品的语法是:

npm unpublish package_name@version

如果你想删除整个包,你可以放弃 @version. 在这种情况下,你需要添加 --force 旗帜,以避免整个项目的意外删除:

npm unpublish --force package_name

结论

您现在应该对如何在 Node.js 项目中利用 npm 的能力有相当深入的了解。 npm 实用程序可用于协助大多数项目开发领域,从构建文件和获得依赖,到发布包和部署到生产。

By Justin Ellingwood
Published At
Categories with 技术
Tagged with
comments powered by Disqus