当前位置: 首页 > 后端技术 > Node.js

【节点英雄】2.使用NPM

时间:2023-04-03 23:08:11 Node.js

/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,可以执行:npminstallnpm@3-g。使用NPM在上一章Node.js入门中,您已经在创建package.json文件时遇到了NPM。让我们继续扩展我们的知识!添加依赖项在本节中,您将学习如何向应用程序添加运行时依赖项。现在您有了一个package.json文件,您可以将依赖项添加到您的应用程序。让我们先添加一个!尝试以下命令:npminstalllodash--save使用这个命令,我们做了两件事:首先,下载lodash并将其放置在node_modules文件夹中。所有外部依赖项都将放在该文件夹中。此文件夹通常不会添加到源代码管理中,因此如果您使用的是git,请确保将lodash添加到您的.gitignore文件中。这是您的.gitignore的一个很好的起点。#Logslogs*.lognpm-debug.log*#Runtimedatapids*.pid*.seed#jscoverage/JSCoverlib-cov生成的检测库目录#istanbulcoverage等工具使用的覆盖目录#Grunt中间存储(http://gruntjs.com/creating-plugins#storing-task-files).grunt#node-wafconfiguration.lock-wscript#编译后的二进制插件(http://nodejs.org/api/addons.html)build/Release#依赖目录node_modulesjspm_packages#可选npmcachedirectory.npm#OptionalREPLhistory.node_repl_history现在让我们看看package.json文件中发生了什么变化!一个新的属性dependencies出现在文件中:"dependencies":{"lodash":"4.6.1"}这意味着lodash版本4.6.1现在已经安装并可以使用了。请注意,NPM遵循版本控制包的SemVer规则。假设版本号的格式为“主版本号.次版本号.补丁版本号”,当有不兼容的API修改时,增加主版本号;当以向后兼容的方式添加功能时,增加次要版本号;当进行向后兼容的错误修复时,增加补丁版本号。有关详细信息,请参阅:http://semver.org/。现在lodash已经可以使用了,让我们看看如何使用它!您可以像使用自己的模块一样使用它,但现在您不需要定义路径,只需定义模块的名称://index.jsconst_=require('lodash')_.assign({'a':1},{'b':2},{'c':3});//→{'a':1,'b':2,'c':3}添加开发依赖时间依赖被添加到应用程序中。创建Web应用程序时,您可能需要缩小JavaScript文件、合并CSS文件等。执行此类操作的模块仅在资源构建期间运行,因此正在运行的应用程序不需要它们。您可以像这样安装这些脚本:npminstallmocha--save-dev之后,一个名为devDependencies的新部分将出现在package.json文件中。使用--save-dev安装的所有模块都将放置在这里——它们也将放置在同一个node_modules目录中。NPM脚本NPM脚本是一个强大的概念——在它们的帮助下,可以创建小型实用程序甚至复杂的构建系统。最常见的是启动和测试脚本。使用启动脚本定义其他人如何启动您的应用程序,使用测试脚本定义如何运行测试。在package.json中,它们看起来像这样:"scripts":{"start":"nodeindex.js","test":"mochatest","your-custom-script":"echonpm"}注意:start:很简单,它只是描述了应用程序的起点,可以通过npmstart调用。test:的目的是执行你的测试-这里有一个问题,在这种情况下,mocha不需要全局安装,因为npm会在node_modules/.bin文件夹下寻找它,mocha会被放在那里。它可以通过npmtest调用。your-custom-script:无论你想要什么,你都可以选择任何名字。它可以通过npmrunyour-custom-script调用——不要忘记运行部分!Scopedpackages/privatepackages最初NPM有一个全局共享的模块名称命名空间——注册表中有超过250,000个模块,大多数简单的名称都被采用了。此外,全局命名空间仅包含公共模块。NPM通过引入ScopedPackages解决了这个问题。作用域包具有以下命名方案:@myorg/mypackage作用域包可以像以前一样安装:npminstall@myorg/mypackage--save-dev它将出现在package.json中:“dependencies”:{“@myorg/mypackage":"^1.0.0"}正如预期的那样,请求作用域包应该如下所示:require('@myorg/mypackage')有关详细信息,请参阅NPM作用域模块文档。下一步:异步编程下一章将学习使用回调和Promises进行异步编程的原理。