Node.js 使得在服务器端使用 JavaScript 编写应用程序成为可能。它是基于 V8Javascript 运行时并且使用 C++ 编写的,所以它的速度很快。最初,它旨在作为应用程序的服务器环境,但是开发人员使用它创建工具来帮助他们进行本地任务自动化。从那时起,一个全新的基于 Node 的工具生态系统(如 Grunt,Gulp 和 webpack)彻底改变了前端开发的面貌。
为了在 Node.js 中使用这些工具(或者包),我们需要能够以有效的方式安装和管理它们。这就是我们即将要讨论的:npm--Node 的包管理器。它负责安装你需要使用的包,并且提供一个有用的界面让你与它们交互。
在本文中,我将介绍使用 npm 的基础知识。我将向你演示如何在本地和全局模式下安装包,以及删除,更新和安装某个版本的包。我还会告诉你如何使用
处理项目的依赖。如果你更喜欢看视频,请注册 SitePoint Premium 观看我们的免费录屏:什么是 npm 以及如何使用?。
- package.json
在开始使用 npm 之前,首先需要在电脑中安装 Node.js。
去 Node.js 下载页面获取你需要的版本。可以获得 Windows 和 Mac 环境的安装包和预编译的 Linux 二进制文件以及源代码。对于 Linux 环境,你还可以通过包管理器来安装 Node,如这里所述。
本教程我们将使用 v6.10.3 稳定版本。在编写本文时,这是 Node 的当前长期支持(LTS)版本。
提示: 你也可以考虑使用版本管理器来安装 Node。这将消除下面提出的权限问题。
我们来看一下 Node 的安装位置以及版本。
- $ which node / usr / bin / node $ node--version v6.10.3
使用 Node 的 REPL(交互式解释器)检查安装是否成功。
- $ node > console.log('Node is running');
- Node is running > .help.
- break Sometimes you get stuck,
- this gets you out.clear Alias
- for.
- break.exit Exit the repl.help Show repl options.load Load JS from a file into the REPL session.save Save all evaluated commands in this REPL session to a file > .exit
Node.js 已经安装成功,现在我们可以把注意力集中在 npm 上,npm 已经集成在上述安装的 Node.js 中。
- $ which npm / usr / bin / npm $ npm--version 3.10.10
npm 可以以本地或全局模式安装包。在本地模式下,将包安装在父工作目录中的
文件夹中。该位置由当前用户所拥有。安装在
- node_modules
中的全局包由根目录所拥有(
- {prefix}/lib/node_modules/
通常是
- {prefix}
或
- /usr/
)。这意味着你将不得不使用 sudo 全局安装包,这可能会在解决第三方依赖时导致权限错误,也可能导致安全问题。下面让我们更改一下:
- /usr/local
让我们看看运行
输出了什么:
- npm config list
- $ npm config list;
- cli configs user - agent = "npm/3.10.10 node/v6.10.3 linux x64"
- ;
- userconfig / home / sitepoint / .npmrc prefix = "/home/sitepoint/.node_modules_global"
- ;
- node bin location = /usr/bin / nodejs;
- cwd = /home/sitepoint;
- HOME = /home/sitepoint;
- "npm config ls -l"to show all defaults.
输出给了我们有关 npm 的安装信息。现在,重要的是获取当前的全局位置。
- $ npm config get prefix / usr
为了在主目录中安装全局包,我们需要更改这个前缀。为此,你可以在主文件夹中创建一个新目录。
- $ cd~ && mkdir.node_modules_global $ npm config set prefix = $HOME / .node_modules_global
通过这个简单的配置更改,我们将位置更改为全局 Node 包安装的位置。这个更改同时会在我们的主目录中创建了一个. npmrc 文件。
- $ npm config get prefix / home / sitepoint / .node_modules_global $ cat.npmrc prefix = /home/sitepoint / .node_modules_global
我们仍然将 npm 安装在由根目录所有的位置。但是要注意我们已经在配置中改变了全局包安装的位置。我们需要再次安装 npm,但是这一次是安装在新用户所在的位置。当然,安装的将是 npm 的最新版本。
- $ npm install npm--global└─┬npm@5.0.2├──abbrev@1.1.0├──ansi - regex@2.1.1....├──wrappy@1.0.2└──write - file - atomic@2.1.0
最后,我们需要添加
到 $PATH 环境变量中,以便可以从命令行运行全局包。为了做到这一点,你可以把下面这一行添加到
- .node_modules_global/bin
,
- .profile
或者
- .bash_profile
文件中并重新启动终端。
- .bashrc
- export PATH = "$HOME/.node_modules_global/bin:$PATH"
现在我们可以找到 npm 的所在目录
并且使用合适的 npm 版本。
- .node_modules_global/bin
- $ which npm / home / sitepoint / .node_modules_global / bin / npm $ npm--version 5.0.2
目前我们只有一个安装在全局的包 - 那就是 npm 包本身。下面我们来安装 UglifyJS 包(一个 JavaScript 的压缩工具)。我们使用 --global 标记,也可以缩写为 - g。
- $ npm install uglify - js--global / home / sitepoint / .node_modules_global / bin / uglifyjs - >/home/sitepoint / .node_modules_global / lib / node_modules / uglify - js / bin / uglifyjs + uglify - js@3.0.15 added 4 packages in 5.836s
从输出可以看出,还安装了其他包, 这些包都是 UglifyJS 包的依赖项。
我们可以使用
命令列出全局包。
- npm list
- $ npm list--global home / sitepoint / .node_modules_global / lib├─┬npm@5.0.2│├──abbrev@1.1.0│├──ansi - regex@2.1.1│├──ansicolors@0.3.2│├──ansistyles@0.1.3....................└─┬uglify - js@3.0.15├─┬commander@2.9.0│└──graceful - readlink@1.0.1└──source - map@0.5.6
然而,输出十分冗长。我们可以使用
选项进行优化。
- --depth=0
- $ npm list - g--depth = 0 / home / sitepoint / .node_modules_global / lib├──npm@5.0.2└──uglify - js@3.0.15
我们发现这要更友好 -- 只显示我们安装的包及其版本号。
我们可以在命令行中使用任何全局安装包。例如:下面的命令展现了如何使用 Uglify 包将
压缩到
- example.js
:
- example.min.js
- $ uglifyjs example.js - o example.min.js
当你在本地安装包时,通常会使用 package.json 文件进行安装。下面让我们创建这样的一个文件。
- $ npm init package name: (project) version: (1.0.0) description: Demo of package.json entry point: (index.js) test command: git repository: keywords: author: license: (ISC)
按
接受默认值,然后键入
- Enter
确认。这样将会在项目的根目录下创建一个
- yes
文件。内容如下:
- package.json
- {
- "name": "project",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "author": "",
- "license": "ISC"
- }
提示:你可以使用
命令以更快的方式生成 package.json 文件
- npm init --y
除了
和
- main
外,其他字段应该是一目了然的。
- scripts
字段是你程序的主入口,
- main
字段允许你指定在包的生命周期中的不同时间运行的脚本命令。我们暂时不讨论这些东西,但是如果你想了解更多相关信息,请参阅《npm 中的 package.json 文档》和《使用 npm 作为构建工具》。
- scripts
现在让我们来安装 underscore 包。
- $ npm install underscore npm notice created a lockfile as package - lock.json.You should commit this file.npm WARN project@1.0.0 No description npm WARN project@1.0.0 No repository field.
- + underscore@1.8.3 added 1 package in 0.344s
注意这里创建了一个文件,我们稍后会讲到它。
打开 package.json 文件我们会看到
字段已经添加到了文件中:
- dependencies
- {..."dependencies": {
- "underscore": "^1.8.3"
- }
- }
来源: http://www.cnblogs.com/hedawei/p/7248833.html