资讯专栏INFORMATION COLUMN

【Node Hero】2. 使用 NPM

CarterLi / 3485人阅读

摘要:网站和使用同样的注册库来显示模块以及查找模块。使用在上一章开始使用中,当创建文件时,已经遇到了。此外,全局命名空间只包含公共模块。通过引入作用域包来解决此问题。下一步异步编程下一章学习使用回调和实现异步编程的原理。

本文转载自:众成翻译
译者:网络埋伏纪事
链接:http://www.zcfy.cc/article/1749
原文:https://blog.risingstack.com/node-hero-npm-tutorial/

本章将学习什么是 NPM,以及如何使用它。我们开始吧!

NPM 概述

NPM 是 Node.js 应用程序所用的包管理器 - 你可以在 NPM 中找到大量模块,这样你就不用重新造轮子了。它就像 Java 的 Maven 或者 PHP 的 Composer。与 NPM 交互有两种主要的接口 - NPM 网站以及 NPM 命令行工具。

网站和 CLI 使用同样的注册库来显示模块以及查找模块。

NPM 网站

NPM 网站地址为 https://npmjs.com。你可以注册成一个新用户,或者只查找包。

命令行界面

要运行 CLI,只需执行:

npm

注意,NPM 是与 Node.js 二进制文件捆绑在一起的,所以不必安装它 - 但是,如果想使用指定的 npm 版本,可以更新它。如果想安装 npm 第三版,那么就可以执行:npm install npm@3 -g

使用 NPM

在上一章 开始使用 Node.js 中,当创建 package.json 文件时,已经遇到了 NPM。下面我们继续扩展知识!

添加依赖

本节将学习如何给应用程序添加运行时依赖。

有了 package.json 文件之后,就可以给应用程序添加依赖了。下面我们先添加一个!试试下面的命令:

npm install lodash --save  

用这一条命令,我们做了两件事情:首先,lodash 被下载,并放到 node_modules 文件夹。所有外部依赖都会放在这个文件夹中。一般不会将这个文件夹添加到源代码管理,所以如果你在用 git,要确保将 lodash 添加到 .gitignore 文件中。

这对你的 .gitignore 是一个好起点。

# Logs
logs
*.log
npm-debug.log*

# Runtime data
pids
*.pid
*.seed

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# node-waf configuration
.lock-wscript

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules
jspm_packages

# Optional npm cache directory
.npm

# Optional REPL history
.node_repl_history

现在我们来看看 package.json 文件中有啥变化!文件中出现了一个新属性dependencies

"dependencies": {
  "lodash": "4.6.1"
}

这意味着 lodash 版本 4.6.1 现在安装好了,可以使用了。注意,NPM 遵循 SemVer 规则来控制包的版本。

假设版本号格式为 “主版本号.次版本号.补丁版本号”,当作出不兼容的 API 修改时,增加主版本号;当以向后兼容的方式添加功能时,增加次版本号;当作出向后兼容的错误修正时,增加补丁版本号。更多信息参见:http://semver.org/。

既然 lodash 已经可以用了,我们来看看能怎么用!可以像你用自己的模块一样的方式用它,不过现在不需要定义路径,只需要模块的名称:

// index.js
const _ = require("lodash")

_.assign({ "a": 1 }, { "b": 2 }, { "c": 3 });  
// → { "a": 1, "b": 2, "c": 3 }
添加开发依赖

本节将学习如何把构建时依赖添加到应用中。

在创建 Web 应用程序时,可能需要压缩 JavaScript 文件,合并 CSS 文件等等。做这种事情的模块只会在资源构建期间运行,所以运行的应用程序不需要它们。

你可以像这样安装这些脚本:

npm install mocha --save-dev  

之后,package.json 文件中会出现一个称为 devDependencies 的新小节。所有带有 --save-dev 安装的模块都会被放在这里 - 它们也会被放在同一 node_modules 目录中。

NPM 脚本

NPM 脚本是一个很强大的概念 - 有了它们相助,就可以创建小的实用工具,甚至构成复杂的构建系统。

最常见的就是 starttest 脚本。用 start 脚本可以定义别人如何启动你的应用程序,用 test 脚本定义如何运行测试。在 package.json 中,它们可以像这样:

  "scripts": {
    "start": "node index.js",
    "test": "mocha test",
    "your-custom-script": "echo npm"
  }

这里要注意的事情:

start: 很简单,它只描述应用程序的起点,可以被 npm start 调用。

test: 用途是执行你的测试 - 这里有个陷阱,在本例中 mocha 不需要全局安装,因为 npm 会在 node_modules/.bin 文件夹下查找它,而 mocha 也会放在这里。它可以用 npm test 调用。

your-custom-script: 任何你想要的东西,你可以挑任何名称。它可以用 npm run your-custom-script 调用 - 不要忘记 run 部分!

作用域包/私有包

起初 NPM 对于模块名称有一个全局共享的命名空间 - 在注册库中有超过 250,000 个模块,大部分简单名称都已经被采用了。此外,全局命名空间只包含公共模块。

NPM 通过引入作用域包(Scoped Package)来解决此问题。作用域包有如下命名模式:

@myorg/mypackage

可以采用与以前一样的方式安装作用域包:

npm install @myorg/mypackage --save-dev  

它会以如下方式出现在 package.json 中:

"dependencies": {
  "@myorg/mypackage": "^1.0.0"
}

不出所料,请求作用域包应该是如下方式:

require("@myorg/mypackage")  

更多信息,请参考 NPM 作用域模块文档。

下一步:异步编程

下一章学习使用回调和 Promises 实现异步编程的原理。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84983.html

相关文章

  • Node Hero】1. 开始使用 Node.js

    摘要:使用一个事件驱动的非阻塞式的模型,让它轻量而高效。也就是说提供了用编写服务器的可能性,这种服务器具有令人难以置信的性能。正如官方声明所说是一个使用与浏览器相同引擎的运行时。这意味着有两个发布版本稳定版和试验版。 本文转载自:众成翻译译者:网络埋伏纪事链接:http://www.zcfy.cc/article/1748原文:https://blog.risingstack.com/nod...

    hqman 评论0 收藏0
  • Node Hero】7. Node.js 项目结构

    摘要:本教程会学习如何正确组织一个项目的结构,从而在应用程序开始增长时避免混乱。项目结构的五个基本规则组织项目有不少可能的方式并且每种已知的方式都有其兴衰。过去在,我们有机会创建各种规模的高效应用程序,也获得了大量关于项目结构注意事项的见解。 本文转载自:众成翻译译者:网络埋伏纪事链接:http://www.zcfy.cc/article/1756原文:https://blog.rising...

    张红新 评论0 收藏0
  • Node Hero】6. Node.js Request 模块

    摘要:状态码描述了请求的结果,它对错误处理是必不可少的。响应还没完成成功这些状态码表示请求被接收并正确处理了。服务器错误当服务器由于某些错误不能完成有效的请求时,就发送这些状态码。 本文转载自:众成翻译译者:网络埋伏纪事链接:http://www.zcfy.cc/article/1758原文:https://blog.risingstack.com/node-hero-node-js-req...

    BlackHole1 评论0 收藏0
  • Node Hero】4. 第一个 Node.js HTTP 服务器

    摘要:本文转载自众成翻译译者网络埋伏纪事链接原文本章我会指导你启动一个简单的服务器,并开始为请求服务。现在,我们开始创建第一个服务器我们将模块,并将服务器绑定到端口来监听。必须用如下方式启动服务器总结本章学习了如何从头开始创建第一个服务器。 本文转载自:众成翻译译者:网络埋伏纪事链接:http://www.zcfy.cc/article/1750原文:https://blog.risings...

    Coly 评论0 收藏0
  • Node Hero】3. 理解异步编程

    摘要:异步编程在传统编程实践中,大多数操作都是同步发生的。中的异步编程异步是一种输入输出处理的形式,它允许在传输完成之前,其它处理能继续进行。 本文转载自:众成翻译译者:网络埋伏纪事链接:http://www.zcfy.cc/article/1759原文:https://blog.risingstack.com/node-hero-async-programming-in-node-js/ ...

    kevin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<