美文网首页
如何使用NPM?CNPM又是什么?

如何使用NPM?CNPM又是什么?

作者: 慕瑾大大 | 来源:发表于2018-01-02 19:40 被阅读0次

今天给大家分享一下 如何使用NPM?CNPM又是什么?

1.背景介绍

什么是npm?

NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:

允许用户从NPM服务器下载别人编写的第三方包到本地使用。

允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。

允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 "npm -v" 来测试是否成功安装。命令如下,出现版本提示表示安装成功:

npm的规则

允许用户从NPM服务器下载别人编写的第三方包到本地使用。

允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。

允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 "npm -v" 来测试是否成功安装

什么是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 install express

默认会安装express的最新版本,也可以通过在后面加版本号的方式安装指定版本,如npm install express@3.0.6

npm install name -g

将包安装到全局环境中

但是代码中,直接通过require()的方式是没有办法调用全局安装的包的。全局的安装是供命令行使用的,就好像全局安装了vmarket后,就可以在命令行中直接运行vm命令

npm install name --save

安装的同时,将信息写入package.json中项目路径中如果有package.json文件时,直接使用npm install方法就可以根据dependencies配置安装所有的依赖包,这样代码提交到github时,就不用提交node_modules这个文件夹了。

npm root:查看当前包的安装路径

npm root -g:查看全局的包的安装路径

npm -v:查看npm安装的版本

npm list --depth=0:查看所有高级的npm moudles

npm list --depth=0 -global:查看所有全局安装的模块

为什么要保存至PACKAGE.JSON?

因为node插件包相对来说非常庞大,所以不加入版本管理,将配置信息写入package.json并将其加入版本管理,其他开发者对应下载即可(命令提示符执行npm install,则会根据package.json下载所有需要的包)。

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

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

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

查看npm帮助:npm help 

查看当前目录已安装插件: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 - 包的版本号。

description - 包的描述。

homepage - 包的官网 url 。

author - 包的作者姓名。

contributors - 包的其他贡献者姓名。

dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。

repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。

main - main 字段是一个模块ID,它是一个指向你程序的主要项目。就是说,如果你包的名字叫 express,然后用户安装它,然后require("express")。keywords - 关键字

3.常见问题

如何安装npm?

4.解决方案

1.前往nodejs官网下载nodejs,https://nodejs.org/en/ ,建议下载稳定版的,下载后无脑安装即可。安装完毕之后,在cmd中输入node -v查看是否已经安装成功,如果有版本号显示,则代表安装成功!!!

5.编码实战

6.扩展思考

cnpm有哪些问题?

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

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

7.参考文献

npm的一些常用命令

8.更多讨论

Q1:bower和npm的异同点?

npm是node js的包管理器,用来下载安装node js的第三方工具包,也可以用来发布你自己开发的工具包。bower是一个前端库管理的工具,管理一些js库,比如说jQuery,bootstrap等

Q2:如何查看npm配置?

npm config list //查看基本配置 

npm config list -l //查看所有配置

npm本地安装与全局安装有什么区别?

npm install grunt // 本地安装,则是将模块下载到当前命令行所在目录。 

npm install -g grunt//全局安装,模块将被下载安装到【全局目录】中;

npm如何获取全局安装的默认目录?

npm config get prefix

npm如何设置全局安装的默认目录?

npm config set prefix “directory”

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

全局安装方式是键入命令:npm install gulp -g 或 npm install gulp --global,其中参数-g的含义是代表安装到全局环境里面,包安装在Node安装目录下的node_modules文件夹中,一般在 \Users\用户名\AppData\Roaming\ 目录下,可以使用npm root -g查看全局安装目录。

全局安装后可以供命令行(command line)使用,用户可以在命令行中直接运行该组件包支持的命令,如下图全局安装gulp后的cmd文件

本地安装方式是键入命令:npm install gulp 或 npm install gulp --save-dev等,其中参数--save-dev的含义是代表把你的安装包信息写入package.json文件的devDependencies字段中,包安装在指定项目的node_modules文件夹下。

本地安装后可以直接通过require()的方式引入项目中node_modules目录下的模块,如下示例,本地安装后直接在gulpfile.js中require('gulp')。

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

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

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

相关文章

网友评论

      本文标题:如何使用NPM?CNPM又是什么?

      本文链接:https://www.haomeiwen.com/subject/gnuqnxtx.html