1. 背景介绍
(一)什么是npm
npm(node package manager)是nodejs的包管理器,用于node插件管理(包括安装、卸载、依赖管理等)。 NPM是随NodeJS一起安装的包管理工具,可以解决NodeJS代码部署中的很多问题。这是Node成功的重要原因之一。常见的使用场景包括以下几种:
允许用户从NPM服务器下载别人编写的第三方包供本地使用。
允许用户从NPM服务器下载并安装他人编写的命令行程序供本地使用。
允许用户将自己编写的包或命令行程序上传到NPM服务器供其他人使用。
由于新版本的nodejs集成了npm,所以之前也安装了npm。也可以通过输入“npm -v”来测试安装是否成功
为什么我们需要包管理工具?因为当我们在Node.js 上开发时,我们使用了大量别人编写的JavaScript 代码。如果我们想使用别人写的包,每次都要根据名字去官网搜索,下载代码,解压,然后使用,非常繁琐。于是一个中心化的管理工具就应运而生了:大家把自己开发的模块打包放到npm官网上。如果你想使用它们,你可以直接通过npm 安装它们并使用它们,而不必担心代码存在于哪里或应该下载到哪里。
更重要的是,如果我们要使用模块A,而模块A依赖于模块B,模块B又依赖于模块X和模块Y,npm可以根据依赖关系下载并管理所有依赖包。否则,我们自己手动管理,既麻烦又容易出错。
(2)什么是cnpm?
由于npm安装插件是从国外服务器下载的,受网络影响较大,可能会导致异常。如果npm服务器在中国那就太好了,所以我们很高兴分享的淘宝团队做到了这一点。来自官网:“这是一个完整的npmjs.org镜像,你可以用这个代替官方版本(只读)。同步频率目前为每10分钟一次,以确保与官方服务同步可能的。”
2.知识分析
npm常用命令
1. npm install moduleNames:安装Node 模块
安装完成后会生成一个node_modules目录,该目录下是安装的node模块。
Node的安装分为全局模式和本地模式。
通常它将在本地模式下运行,并且该包将安装到应用程序代码本地的node_modules 目录中。
在全局模式下,Node 包将安装在Node 安装目录的node_modules 下。
全局安装命令是$npm install -g moduleName。
学习使用$npm set global=true 来设置安装模式。 $npm get global 可以查看当前使用的安装模式。
例子:
npm 安装快速
默认情况下将安装最新版本的express。也可以通过在末尾添加版本号来安装指定版本,如npm installexpress@3.0.6
npm 安装名称-g
将包安装到全局环境中
但是代码中并没有办法直接通过require()来调用全局安装的包。全局安装用于命令行使用。就像全局安装vmarket后一样,可以直接在命令行中运行vm命令。
这里的require()是node.js的内置函数,用于引入其他模块,以便在代码中调用该模块的函数和变量。默认情况下,node.js 会在NODE_PATH 以及js 所在当前项目目录下的node_modules 文件夹中搜索模块。
npm 安装名称--save
安装的同时,将信息写入package.json中的项目路径中。如果有package.json文件,可以直接使用npm install方法根据dependency配置安装所有依赖包。这样代码提交到github的时候就不需要提交node_modules了。这个文件夹。
npm root:查看当前包的安装路径
npm root -g:查看全局包安装路径
npm -v:查看npm安装的版本
npm list --depth=0:查看所有高级npm模块
npm list --depth=0 -global:查看所有全局安装的模块
为什么要保存至package.json?
由于节点插件包很大且版本复杂,如果不添加包信息,模块之间的依赖变得非常困难。将配置信息写入package.json并添加到版本管理中。其他开发者可以相应下载。 (在命令提示符下执行npm install,会根据package.json下载所有需要的包)。
每个项目的根目录下一般都有一个package.json文件,定义了项目所需的各种模块,以及项目的配置信息(如名称、版本、许可证等元数据)。 npm install命令会根据这个配置文件自动下载需要的模块,也就是配置项目所需的运行和开发环境。
使用npm卸载插件:npm uninstall name [-g] [--save-dev] PS:不要直接删除本地插件包
使用npm更新插件:npm update name [-g] [--save-dev]
更新所有插件:npm update [--save-dev]
查看npm帮助:npm帮助
查看当前目录已安装的插件:npm list
PS:npm插件安装流程:从http://registry.npmjs.org下载对应的插件包(网站服务器位于国外,所以下载经常缓慢或异常),解决办法是cnpm
cnpm简介:
官网:http://npm.taobao.org
安装:从命令提示符运行npm install cnpm -g --registry=https://registry.npm.taobao.org
注意:安装后最好检查版本号cnpm -v 或关闭命令提示符重新打开。如果安装后直接使用可能会出现错误。
PS:cnpm的用法和npm一模一样,只不过执行命令时npm改为cnpm。
Package.json属性说明:
name - 包名称。
version - 包的版本号。
描述- 包的描述。
主页- 包的官方网站url。
作者- 包作者的姓名。
贡献者- 包的其他贡献者的姓名。
依赖项- 依赖包列表。如果没有安装依赖包,npm会自动在node_module目录下安装依赖包。
存储库- 存储包代码的位置类型,可以是git 或svn。 git 可以在Github 上。
main - main 字段是一个模块ID,指向程序的主要项目。也就是说,如果您的包名为express,并且用户安装了它,则需要("express")。
关键词-关键词
3. 常见问题解答
如何安装npm?
4.解决方案
1、去nodejs官网下载nodejs,https://nodejs.org/en/。建议下载稳定版本。下载后,运行安装。安装完成后,在cmd中输入node -v,检查是否安装成功。如果显示版本号则说明安装成功。
2.接下来我们尝试输入npm -v
还有一个版本号。其实nodejs自带了npm,所以我们不需要另外安装。接下来我们需要配置npm的全局模块的存储路径和缓存路径。例如,如果我想将上述两个文件夹放在NodeJS的主目录中,我会在NodeJs下创建“node_global”和“node_cache”两个文件。文件夹。我们只要在cmd中输入两行命令即可:
npm 配置集前缀"D:Program Filesnodejsnode_global"
npm 配置集缓存"D:Program Filesnodejsnode_cache"
下一步非常关键,我们需要设置系统变量。转到我的电脑属性高级环境变量。在系统变量下新建“NODE_PATH”,输入“D:Program Filesnodejsnode_globalnode_modules”
5. 编码实践
6.拓展思维
cnpm 存在哪些问题?
1. cnpm仓库只是npm仓库的一个副本。它不承担发布工作,因此如果使用cnpmpublish 命令,将会失败。
2、不仅publish会执行失败,其他需要用户注册(npm adduser)或者修改包状态的命令也无法与cnpm一起使用。
7. 参考文献
参考1:npm模块安装机制介绍
参考2:开发人员对npm不满意并取消发布了所有模块
8.更多讨论
npm 和Bower 有哪些相同点和不同点?
问:bower 和npm 有什么异同?
npm 是Node.js 的包管理器。用于下载安装node js的第三方工具包。也可以用来发布自己开发的工具包。 Bower是一个前端库管理工具,可以管理一些js库,比如jQuery、bootstrap等。
Q: 全局安装和本地安装有什么区别?
由于采用全局模式安装,因此该软件包可供所有程序使用。无法进行本地安装。
默认情况下,npm 会将包安装到当前目录中。这体现了npm不同的设计理念。喜欢
如果全局安装该包,可以提高程序的复用程度,避免相同内容的重复。
副本,但缺点是很难处理不同版本的依赖关系。如果将软件包安装到当前目录中,
也就是说,在本地,不会出现不同程序依赖不同版本包的冲突问题,同时也会减少
这减少了包作者的API兼容性压力,但缺点是同一个包可能会被安装多次。
本地安装方法是输入命令:npm install gulp或者npm install gulp --save-dev等。参数--save-dev表示将你的安装包信息写入package.json文件的devDependencies字段中。该包安装在指定项目的node_modules文件夹中。
本地安装后,可以直接通过require()引入项目的node_modules目录下的模块。
Q: 为什么全局安装后还需要本地安装?
1、js示例代码中,默认情况下node.js会在NODE_PATH以及当前js项目下的node_modules文件夹中搜索模块。因此,如果只是全局安装,则无法通过require()直接引用该模块。您需要手动解决包路径配置问题。当然,你也可以将全局安装的node_modules文件夹复制到项目中。您还可以选择将NODE_PATH 环境变量设置为C:Program Filesnodejs。
2. 软件包更新管理困难。你可能需要对各个包进行重命名,如gulp@3.8.1、gulp@3.9.1.以便区分不同的项目并使用指定的包来保证模块之间的一致性。相互依赖(这个下面会介绍)区分各个项目的正常运行
PPT连接:
PPT
视频链接
undefined_腾讯视频如果这篇文章对您有帮助,让您对修真学院的免费在线学习感兴趣,可以通过我的链接注册成为会员,这样我就可以获得学分(兑换学分),延长学习时间:
【深入理解npm:从基本使用到cnpm的探讨】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
终于找到怎么使用 npm 了!一直很想了解这个东西。
有5位网友表示赞同!
我一直用的 cnpm ,没听说过 npm 诶,这两个有什么区别?
有5位网友表示赞同!
这篇文章看起来挺详细的,我正好要学习如何使用 npm 的。
有14位网友表示赞同!
npm 这么好用,确实应该好好学习一下它的用法啊!
有17位网友表示赞同!
看了标题感觉很有用,我最近在开发时遇到一些问题,可能可以用 npm 解决的?
有17位网友表示赞同!
cnpm 和 npm 是什么关系?这两者都是用来管理软件包的吗?
有10位网友表示赞同!
我一直想了解一下这些工具的使用方法,现在终于有机会了!
有18位网友表示赞同!
我以前用的 yarn,现在感觉 npm 也不错,要试试看这个教程。
有12位网友表示赞同!
学习一下 npm 的技能,也许能让我开发更快速高效的代码!
有13位网友表示赞同!
文章讲得真细致,感觉很容易理解。感谢分享!
有15位网友表示赞同!
希望能涵盖一些cnpm 的使用技巧,比如怎么配置和管理。
有13位网友表示赞同!
我觉得学习 npm 是非常必要的技能,特别是对于前端开发人员来说。
有13位网友表示赞同!
期待这个教程能帮助我更好地掌握 npm 和 cnpm 的使用方法!
有6位网友表示赞同!
以前用的是手动查找包然后下载安装,现在想想真是太麻烦了,npm 感觉好高级啊!
有15位网友表示赞同!
学习一下这些工具的使用方法,可以让我在开发过程中更高效地工作吧。
有17位网友表示赞同!
cnpm 是哪个国家的产物?
有9位网友表示赞同!
这篇文章好像能解决我之前遇到的一些关于 package 的问题!
有12位网友表示赞同!
感觉这个教程应该很权威,因为我之前看到的很多资料都提到了 npm 和 cnpm 。
有15位网友表示赞同!
我已经注册了 npm 账号,但还不知道怎么使用它呢!希望能通过这篇教程学习到更多知识!
有15位网友表示赞同!