介绍
Node.js是一个流行的Javascript平台,用于服务器端编程,允许您快速构建和运行Web应用程序。 在本指南中,我们将讨论如何使用
npm
,使Node.js的包管理系统。 在过去的指南中,我们讨论
了如何在Ubuntu 14.04服务器上安装Node.js的 。 我们还讨论了
如何通过搜索和探测包使用NPM作为一个整体的消费 。 现在,我们将介绍如何修改配置设置,创建和发布包以及如何与npm软件包存储库进行交互。让我们跳进去。
管理配置设置
要控制npm的行为,您可以调整工具的设置。有很多方法内置到npm来做到这一点。
列出当前配置设置
首先,让我们看看我们当前的设置是什么。我们可以通过键入:
npm config ls
; cli configs
registry = "https://registry.npmjs.org/"
user-agent = "npm/1.4.9 node/v0.11.13 linux x64"
; node bin location = /home/demouser/.nvm/v0.11.13/bin/node
; cwd = /home/demouser/projects/test_package
; HOME = /home/demouser
; '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
标志:
npm config ls -l
; cli configs
long = true
registry = "https://registry.npmjs.org/"
user-agent = "npm/1.4.9 node/v0.11.13 linux x64"
; default values
always-auth = false
bin-links = true
browser = null
ca = null
. . .
获取和设置特定值
正如你所看到的,有很多键 - 值对的信息。这是我们如何在npm内使用配置值。例如,如果我们想要查看“编辑器”键的当前值,我们可以键入:
npm config get editor
vi
如果我们想改变这个值,我们可以通过输入如下命令来轻松实现:
npm config set editor vim
这将做两件事。它将改写我们的新价值(VIM)的默认值(VI),这
也将创造我们的配置文件,因为它是我们的第一个自定义值。 我们的配置文件写在哪里?为什么不要问npm:
npm config get userconfig
/home/demouser/.npmrc
如果我们使用设定的值
config set -g
语法,它们将被写入到我们的
globalconfig
文件。我们可以通过键入以下内容找到此存储位置:
npm config get globalconfig
/home/demouser/.nvm/v0.11.13/etc/npmrc
您的文件位置将根据您用于安装Node.js的方法而有所不同。同样,此文件将不存在,直到您偏离全局级别上的默认值。 对于
确实存在,如果你想与你的编辑器中编辑文件,你可以通过键入:
npm config edit
如果尚未创建文件(手动或通过在npm内设置非默认值),这将不起作用。 您还可以为特定命令设置不同的配置选项,因为您使用以下语法调用它:
npm subcommand --key value
其中,值由拉其他的地区是
package.json
对于项目本身和环境变量文件。
使用npm创建包
我们已经学习了一些关于如何使用npm作为标准包管理器来获取和管理应用程序需要的依赖项和包。但是,您也可以使用npm来帮助您打包和共享您的应用程序或库。 npm帮助的第一件事之一是为您的项目生成一个package.json文件。在开始之前,您应该查看帮助页面,以便您熟悉将要询问的字段:
npm help json
进入应用程序目录后,您可以开始:
cd ~/projects/test_package
npm init
这将提示您需要为您构建包文件的信息。它将从环境中获取一些提示来填充默认值。您的会话可能如下所示:
name: (test_package)
version: (0.0.0) 0.0.1
description: A test package
entry point: (index.js) index.js
test command: echo "test"
git repository: http://fake.git.repo.com
keywords: test
author: me
license: (ISC) GLP
About to write to /home/demouser/projects/test_package/package.json:
{
"name": "test_package",
"version": "0.0.1",
"description": "A test package",
"main": "index.js",
"dependencies": {
"express": "^4.2.0"
},
"devDependencies": {},
"scripts": {
"test": "echo \"test\""
},
"keywords": [
"test"
],
"author": "me",
"license": "GLP"
}
Is this ok? (yes) yes
如果你有产生你的后安装额外的依赖
package.json
文件,你应该安装他们
--save
标志,这将更新您的依赖项列表中
package.json
文件。 如果你的软件包需要非常具体的版本,则可以使用
shrinkwrap
子命令。通常,包文件将当前包设置为构建所需的最低可行版本。使用收缩包装文件,这些版本是特定的并锁定。 您可以使用以下命令创建此文件:
npm shrinkwrap
这将生成一个名为
npm-shrinkwrap.json
为每个依赖和递归的方式非常详细的包信息。如果您的应用程序环境是微妙的,这是一个重要的工具。
通过npm与npm网站交互
故宫在项目维护包的网站
npmjs.org 。你实际上可以通过npm命令行工具与此网站交互。我们已经讨论过如何搜索包,但还有更多的功能。 首先,如果您还没有账号注册的是,你可以通过键入NPM界面
内这样做:
npm adduser
系统将要求您选择用户名,密码和电子邮件地址。这些将被发布到网站,就像您通过Web浏览器注册。 如果您检查配置,您应该会看到新的帐户详细信息:
npm config ls
. . .
; userconfig /home/demouser/.npmrc
editor = "vim"
email = "demouser@domain.com"
username = "demouser"
. . .
发布您的软件包
当你创建了一个你想要与更大的Node.js社区共享的包时,npm站点是一个很好的起点。 幸运的是,npm自带了一些帮助函数,让你开始。 如果您在包的目录中,则可以直接键入:
npm publish
这将把你的包推到npm网站。此操作的成功取决于您的包具有唯一的名称和版本号。如果你去那里搜索你的包,它应该像任何其他Node.js包一样列出。
标记您的上传
您可以通过使用标签的包的特定版本
tag
子命令。这些可以在安装和依赖关系规范期间用于替换版本号。 默认情况下,npm会在您发布的任何包中包含一个标记为“latest”的标签。这只是最近的推动。您可以通过键入以下内容查看此内容:
npm config get tag
latest
这意味着您可以通过键入以下内容来专门请求最新版本:
npm install package@latest
如果您要为其中一个套件/版本组合添加其他标记,可以键入以下内容:
npm tag package@version tag_name
这将允许您引用由“tag_name”标记的版本,而不是版本号。
改变包裹的所有权
默认情况下,当您发布包时,您将被赋予包的所有权。 您可以通过键入以下内容进行验证:
npm owner ls package_name
demouser <demouser@domain.com>
如果你想添加额外的人到项目,这将允许他们进行修改,你可以发出这样的命令:
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
如果要删除整个软件包。 在这种情况下,你必须添加
--force
标志,以避免整个项目的意外删除:
npm unpublish --force package_name
结论
你现在应该对如何利用Node.js项目中npm的力量有一个相当深入的了解。 npm实用程序可用于协助项目开发的大部分领域,从构建文件和获取依赖关系,到发布软件包和部署到生产环境。