如何使用npm?cnpm又是什么?

showcase showcase     2023-03-09     570

关键词:

背景介绍

 什么是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可以根据依赖关系,把所有依赖的包都下载下来并管理起来。否则,靠我们自己手动管理,肯定既麻烦又容易出错。

什么是cnpm?

因为npm安装插件是从国外服务器下载,受网络影响大,可能出现异常,所以我们乐于分享的淘宝团队干了这事。来自官网:“这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。”

知识剖析

npm install moduleNames:安装Node模块

安装完毕后会产生一个node_modules目录,其目录下就是安装的各个node模块。

node的安装分为全局模式和本地模式。

一般情况下会以本地模式运行,包会被安装到和你的应用程序代码的本地node_modules目录下。

在全局模式下,Node包会被安装到Node的安装目录下的node_modules下

为什么要保存至PACKAGE.JSON?

因为node插件包非常大,版本庞杂,所以不加入package信息,模块间的依赖变得非常困难,将配置信息写入package.json并将其加入版本管理,其他开发者对应下载即可(命令提示符执行npm install,则会根据package.json下载所有需要的包)。 每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm install 命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。

PACKAGE.JSON 属性说明:

name - 包名。(不要把node或者js放在名字中)

version - 包的版本号。

dependencies - 项目运行所依赖的模块

devDependencies - 项目开发所需要的模块

bin - 这需要在你的package.json中提供一个bin字段,它是一个命令名和本地文件名的映射。在安装时,如果是全局安装,npm将会使用符号链接把这些文件链接到prefix/bin,如果是本地安装,会链接到./node_modules/.bin/

npm常用命名

使用npm卸载插件:npm uninstall < name > [-g] [--save-dev] PS:不要直接删除本地插件包

使用npm更新插件:npm update < name > [-g] [--save-dev] 

更新全部插件:npm update [--save-dev] 

查看npm帮助:npm help 

查看当前目录已安装插件:npm list 

还有一些npm的简单命令就不多说了

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。

3.常见问题

bower 和 npm有什么区别

4.解决方案

npm 是伴随 Node.js 出现的一个包管理器,最开始只能支持 Node.js 的模块管理,但是后来, npm 官网经过一次改版,打出的口号是,javascript 的包管理器,所以,其已经不在局限于是 Node.js 的模块管理了,已经通用到了所有 js 的包管理工具了,可以说,前后通吃了。

bower 的话,从一开始,就是专门为前端表现设计的包管理器,一切全部为前端考虑的。npm 和 bower 的最大区别,就是 npm 支持嵌套地依赖管理,而 bower只能支持扁平的依赖(嵌套的依赖,由 程序员自己解决)。

嵌套依赖,指的就是,你依赖的软件包,还有它自己的依赖,好像摘葡萄,一摘一大串。在服务器环境的时候,这并没什么关系,因为存储空间够大,一切代码都是本地运行,只要解决完依赖就行了, 但是到了用户产品的浏览器里,就很成问题了,你不能让用户去下载好几M的js代码,那就太糟糕了。在这个情况下,就需要程序员自己手动解决用到的类库的嵌套依赖问题。比如确保各种各样的插件 都依赖同一个版本的jQuery。

扩展思考

cnpm有哪些问题?

1.cnpm 的仓库只是 npm 仓库的一个拷贝,它不承担 publish 工作,所以你用 cnpm publish 命令会执行失败的

2.不仅是 publish 会执行失败,其它的需要注册用户(npm adduser)、或者修改 package 状态等命令都无法用 cnpm

7.参考文献

npm 模块安装机制简介

开发者对 npm 公司不满,unpublish 了自己的所有模块

npm的一些常用命令

bower 和 npm 的区别详细介绍

更多提问

Q:全局安装和本地安装的区别?

因为全局模式安装,包可以供所有的程序使用。本地安装则不可以。 npm 默认会把包安装到当前目录下。这反映了 npm 不同的设计哲学。如 果把包安装到全局,可以提高程序的重复利用程度,避免同样的内容的多 份副本,但坏处是难以处理不同的版本依赖。如果把包安装到当前目录, 或者说本地,则不会有不同程序依赖不同版本的包的冲突问题,同时还减 轻了包作者的 API 兼容性压力,但缺陷则是同一个包可能会被安装许多次。

Q:为什么进行了全局安装还要进行本地安装

1、在js实例代码中,默认下node.js会在NODE_PATH和目前js所在项目下的node_modules文件夹下去寻找模块,因此,如果只是全局安装,不能直接通过require()的方式去引用模块,需要手动解决包路径的配置问题,当然你也可以复制全局安装的node_modules文件夹到项目下,还有办法可以选择将环境变量的NODE_PATH设置为C:Program Files odejs。

 2.对于包的更新不好管理,可能你需要为每个包重新命名,如[email protected][email protected],为了区别不同项目使用指定的包,保证模块之间的相互依赖,区别每个项目正常运行

Q:如何在package.JSON的dependencies和devDependencies写入信息

A:npm install --save babel-cli和npm install -dev babel-cli使用这两个命令安装后可自动写入文件

npm install --save-dev babel-cli也可以在一起用



原文:https://www.jianshu.com/p/f581cf9360a2

如何使用cnpm进行安装各种包盒插件(只怪npm对我太无情)

淘宝的NPM镜像是一个完整的npmjs.org镜像。你可以用此代替官方版本(只读),同步频率目前为15分钟一次以保证尽量与官方服务同步。(对于国内的有需求的人真是福音)有兴趣的童鞋可以去https://npm.taobao.org/了解一下。 使用说... 查看详情

cnpm(代码片段)

...,淘宝NPM镜像,同步官方版本频率为10分钟一次cnpm的两种使用方式:切换到淘宝镜像源安装cnpm,然后用cnpm代替npm切换到淘宝镜像源设置npmconfigsetregistryhttps://registry.npm.taobao.org验证npmconfiggetregistry(返回:https://registry.npm.taobao.org)... 查看详情

nodejsnpm和cnpm的使用

安装nodejs后会有npm命令npm可以安装node插件cnpm使用的是淘宝网的镜像http://npm.taobao.org安装命令提示符执行:npminstallcnpm-g--registry=https://registry.npm.taobao.org这样cnpm也可以和npm一样安装插件了 查看详情

[npm]国内是用cnpm代替npm命令方法

cnpm国内使用npm速度很慢,你可以使用淘宝定制的cnpm(gzip压缩支持)命令行工具代替默认的npm:npminstall-gcnpm--registry=https://registry.npm.taobao.orgnpmconfigsetregistryhttps://registry.npm.taobao.org 查看详情

nodejsnpm和cnpm的使用

npm可以安装node插件cnpm使用的是淘宝网的镜像http://npm.taobao.org安装命令提示符执行:npminstallcnpm-g--registry=https://registry.npm.taobao.org这样cnpm也可以和npm一样安装插件了 查看详情

cnpm安装

国内使用npm速度很慢,你可以使用淘宝定制的cnpm(gzip压缩支持)命令行工具代替默认的npm:$npminstall-gcnpm--registry=https://registry.npm.taobao.org$npmconfigsetregistryhttps://registry.npm.taobao.org这样就可以使用cnpm命令来安装模块了:$cnpminstall[name]更 查看详情

node当中的cnpm和npm的区别和使用

...果显示出来了就说明安装成功然后npm可以安装node插件cnpm使用的是淘宝网的镜像http://npm.taobao.org输入以下内容获取淘宝的镜像:npminstallcnpm-g--registry=https://registry.npm.taobao.org这样cnpm也可 查看详情

安装淘宝镜像cnpm

...=https://registry.npm.taobao.org输入cnpm-v,可以查看当前cnpm版本使用cnpm的方法就是,需要用到npm的地方直接使用cnpm替换就可以了(注意,cnpm并不能代替npm使用,例如在下载依赖的时候使用cnpmi会造成依赖包下载不全的情况,建议两者搭... 查看详情

npm淘宝镜像的安装(不使用cnpm)

...需要修改回来npmconfigsetregistryhttps://registry.npmjs.org/a:单次使用:npminstall--registry=https://registry.npm.taobao.orgb:永久替换:在开发react-native的时候,不要使用cnpm,cnpm安装的模块路径比较奇怪,packager不能正常识别。所以,为了方便开发... 查看详情

npm和cnpm都很慢,还超时(代码片段)

...npm仓库用的是国外网址,只要修改为国内镜像网址,正常使用npm就可以了。修改npm仓库为淘宝的镜像网址npmconfig set registry https://registry.npm.taobao.org检查是否配置成功 npmconfiggetregistry 通过上述配置后,再使用npm... 查看详情

拥抱cnpm

在国内由于墙的原因,使用NPM安装模块经常会失败,要或在速度上会慢得跟蜗牛一样,这时候我们其实可以选择国内淘宝的NPM镜像,使用下面的命令来进行安装:npminstall-gcnpm--registry=https://registry.npm.taobao.org安装完成后使用cnpm来... 查看详情

安装npm及cnpm(代码片段)

一、安装npm  1.使用npm首先需要下载node.js    进入nodejs官网nodejs下载,如下图 :          选择适合自己的系统,我这里使用的是window1064bit  2.开始安装      **选好需要下载的路径,要记住,... 查看详情

npm和cnpm

...器,用于node插件管理(包括安装、卸载、管理依赖等)使用npm安装插件:命令提示符执行npminstall<name>[-g][--save-dev] <name>:node插件名称。 例:npminstallgulp-less--save-dev-g:全局安装。&nb 查看详情

npm安装vue

NPM安装CNPM由于npm安装速度慢,使用了淘宝的镜像及其命令cnpm,安装使用介绍参照:大家都知道国内直接使用npm的官方镜像是非常慢的,这里推荐使用淘宝NPM镜像。淘宝NPM镜像是一个完整npmjs.org镜像,你可以用此代替官方版本(只... 查看详情

npm(cnpm)介绍

...用于node插件管理(安装、卸载、更新、管理依赖等);2、使用npm安装安装插件:  1)、命令提示符执行npminstall<name>[-g][--save-dev];  2)、卸载插件:npmuninstall<name>[-g][--save-dev];(不要直接删除本地插件包)    查看详情

设置npm镜像(代码片段)

将npm默认仓库地址改为淘宝镜像由于网络的原因,使用npm进行项目初始化时间很长,甚至失败。我的经验,如果在用npminstall的时候,有个包安装语句长时间不动,不要等待,果断按CTRL+C退出,再等... 查看详情

设置npm镜像(代码片段)

将npm默认仓库地址改为淘宝镜像由于网络的原因,使用npm进行项目初始化时间很长,甚至失败。我的经验,如果在用npminstall的时候,有个包安装语句长时间不动,不要等待,果断按CTRL+C退出,再等... 查看详情

cnpm配置

...外服务器下载,受网络影响大,可能出现异常,所以可以使用国内的镜像、淘宝所提供的cnpm。1.cnpm的安装 ?1.npminsta 查看详情