大家好,如果您还对深入了解NPM使用技巧及CNPM的优势与应用不太了解,没有关系,今天就由本站为大家分享深入了解NPM使用技巧及CNPM的优势与应用的知识,包括的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
允许用户从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?
由于节点插件包很大且版本复杂,如果不添加包信息,模块之间的依赖变得非常困难。将配置信息写入package.json并添加到版本管理中。其他开发者可以相应下载。 (在命令提示符下执行npm install,会根据package.json下载所有需要的包)。每个项目的根目录下一般都有一个package.json文件,定义了项目所需的各种模块,以及项目的配置信息(如名称、版本、许可证等元数据)。 npm install命令会根据这个配置文件自动下载需要的模块,也就是配置项目所需的运行和开发环境。
PACKAGE.JSON 属性说明:
name - 包名称。 (名称中不要带node或js)
version - 包的版本号。
依赖项- 项目依赖的模块
devDependencies - 项目开发所需的模块
bin - 这需要在package.json 中提供一个bin 字段,它是命令名称和本地文件名的映射。安装时,如果是全局安装,npm会使用符号链接将这些文件链接到prefix/bin。如果是本地安装的话,会链接到./node_modules/.bin/
npm常用命名
使用npm卸载插件:npm卸载名称[-g] [--save-dev] PS:不要直接删除本地插件包
使用npm更新插件:npm update name [-g] [--save-dev]
更新所有插件:npm update [--save-dev]
查看npm帮助:npm帮助
查看当前目录已安装的插件: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官网改版了,口号是,a package manager for javascript。因此,它不再局限于Node.js的模块管理。已经应用于所有js包管理工具。可以说是一直都可以用的。
Bower,从一开始就是一个专门为前端性能而设计的包管理器,一切都是为前端考虑的。 npm和bower最大的区别在于npm支持嵌套依赖管理,而bower只能支持平面依赖(嵌套依赖由程序员自己解决)。
嵌套依赖是指你所依赖的软件包及其自身的依赖,就像摘葡萄一样,一次摘一串。在服务器环境中,这并不重要,因为存储空间足够大,并且所有代码都在本地运行。只要解决了依赖关系,它就成为一个问题。但当涉及到用户产品的浏览器时,这就成了问题。你不能让用户下载好几M的js代码就太糟糕了。这种情况下,程序员需要手动解决所使用的类库的嵌套依赖问题。例如,确保各个插件依赖于相同版本的jQuery。
扩展思考
cnpm有什么问题?
1. cnpm仓库只是npm仓库的一个副本。它不承担发布工作,因此如果使用cnpmpublish 命令,将会失败。
2、不仅publish会执行失败,其他需要用户注册(npm adduser)或者修改包状态的命令也无法与cnpm一起使用。
7. 参考文献
npm模块安装机制介绍
开发人员对npm 不满意并取消发布了他的所有模块
npm的一些常用命令
详细介绍bower和npm的区别
更多提问
Q:全局安装和本地安装的区别?
由于它是以全局模式安装的,因此该包可供所有程序使用。无法进行本地安装。默认情况下,npm 会将包安装到当前目录中。这体现了npm不同的设计理念。如果全局安装包,可以提高程序的复用性,避免相同内容的多个副本,但缺点是很难处理不同版本的依赖关系。如果将包安装到当前目录,或者本地,就不会出现不同程序依赖不同版本包的冲突问题,同时也会减轻包作者的API兼容性压力,但缺点是同一软件包可能会安装多次。
Q:为什么进行了全局安装还要进行本地安装
1. js示例代码中,默认情况下node.js会在NODE_PATH以及当前js项目下的node_modules文件夹中搜索模块。因此,如果只是全局安装,则无法通过require()直接引用该模块。您需要手动解决包路径配置问题。当然,你也可以将全局安装的node_modules文件夹复制到项目中。您还可以选择将NODE_PATH 环境变量设置为C:Program。文件nodejs.
2. 软件包更新管理困难。你可能需要对各个包进行重命名,如gulp@3.8.1、gulp@3.9.1.以便区分不同的项目并使用指定的包来保证模块之间的一致性。相互依赖,区分各个项目的正常运行
Q:如何在package.JSON的dependencies和devDependencies写入信息
A:npm install --save babel-cli 和npm install -dev babel-cli 可以使用这两个命令在安装后自动写入文件。
文章分享结束,深入了解NPM使用技巧及CNPM的优势与应用和的答案你都知道了吗?欢迎再次光临本站哦!
【深入了解NPM使用技巧及CNPM的优势与应用】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
想学习前端开发,NPM太重要了吧!这篇文章刚好看中了我的需求。
有15位网友表示赞同!
我一直在用Yarn,感觉NPM其实也不错。现在学习一下吧!
有5位网友表示赞同!
原来还有CNPM啊,我一直都是用NPM的,这种国内镜像应该比较好用对不对?
有19位网友表示赞同!
下载项目的时候经常会用到package.json文件,这篇文章正好可以让我了解下相关知识。
有11位网友表示赞同!
我已经对开发常用工具很熟悉了,但还是来看看这篇介绍吧,说不定能学到新技巧!
有20位网友表示赞同!
CNPM速度更快?应该来比比看,反正我的网速不太好...
有9位网友表示赞同!
以前没听说过CNPM,这个国内镜像有什么优缺点呢?
有8位网友表示赞同!
学习前端越来越觉得工具很重要,NPM和CNPM也是必备的技能。
有13位网友表示赞同!
看了标题感觉很有用,现在先收藏文章吧,以后有时间再仔细阅读。
有13位网友表示赞同!
我是纯小白,这篇文章应该能让我入门NPM和CNPM的基础知识吧?
有17位网友表示赞同!
我经常遇到依赖冲突的问题,不知道这两款工具有没有相应的功能可以解决。
有7位网友表示赞同!
写代码的时候经常要用到第三方库,学习一下NPM的使用应该会提高效率。
有9位网友表示赞同!
这篇文章看起来比较具体实用,应该是能帮我快速上手NPM和CNPM的。
有14位网友表示赞同!
以前只用过淘宝镜像仓库,不知道CNPM有什么特别之处?
有7位网友表示赞同!
前端开发真是一门综合性的技能,都需要各种工具来辅助完成任务...
有9位网友表示赞同!
学习新知识永远没完没了,NPM和CNPM也是学习的重点,抓紧时间了解下。
有7位网友表示赞同!
国内使用CDN下载速度往往比较慢,不知道CNPM能不能解决这个问题?
有19位网友表示赞同!
这个标题很有吸引力,正好我有兴趣学习下前端开发相关的工具。
有19位网友表示赞同!
期待文章能够详细讲解NPM和CNPM的使用方法,以及一些小技巧。
有17位网友表示赞同!
感谢作者分享这篇有用信息,对我的学习非常有帮助!
有19位网友表示赞同!