npm的使用解析

目录

  • 1、npm的安装
    • [1.1、查看npm版本或者是否安装成功(npm -v)]
    • [1.2、npm修改全局包路径及环境变量配置(npm config set)]
    • [1.3、查看npm的配置]
    • [1.4、安装淘宝镜像]
  • [2、npm 创建项目(npm init)]
  • [3、使用npm安装模块(npm install)]
    • [ 3.1、将包安装并保存到生产环境或者开发环境(npm i 模块名 --save、npm i 模块名 -D)]
    • [ 3.2、本地安装和全局安装(npm i 模块名 -g)]
    • [3.3、根据package.json文件安装依赖]
    • [3.4、devDependencies 和dependencies 的区别]
  • [4、卸载模块(npm uninstall)]
  • [5、查看已安装的模块(npm list)]
  • [6、更新模块(npm update)]
  • [7、如何离线安装 npm 全局包]
    • [7.1、直接复制所有文件]
    • [7.2、先复制文件再安装方式]
  • [8、npx命令]
  • [9、nvm安装使用]
    • [9.1、nvm安装后vscode不识别node、npm等问题的解决办法]

1、npm的安装

NPM是随同NodeJS一起安装的包管理工具,只要安装了Node.js,npm也安装好了,node.js的安装:http://www.runoob.com/nodejs/nodejs-install-setup.html

但是由于npm自身的更新频率比Node.js高很多,所以通过上面的命令安装的npm可能不是最新版本,可以通过下面的命令单独更新npm

1.  npm install npm@latest -g

1.1、查看npm版本或者是否安装成功(npm -v)

安装完毕在命令行输入以下命令测试是否安装成功,正确会出现版本号

1.  npm -v

1.2、npm修改全局包路径及环境变量配置(npm config set)

node安装完后会自动也装上了npm,npm的可执行脚本跟node的可执行程序在同一目录下,如果node的已经配置好了环境变量,那么就不用再配置 npm 的环境变量了(node 的环境变量应该是自动配置好的)

通过以下命令可以查看 npm 全局包的安装路径:一般来说默认是在 C 盘下

1.  npm config get prefix

(1)配置npm的全局模块的本地存放路径以及cache的路径

例如我希望将以上两个文件夹放在 E:\develop\nodeJs 目录下,便在NodeJs下建立"node_global"及"node_cache"两个文件夹。
首先在命令行输入以下命令改变npm配置

1.  npm config set prefix "E:\develop\nodeJs\node_global"
2.  npm config set cache "E:\develop\nodeJs\node_cache"

然后在系统环境变量添加系统变量NODE_PATH,输入路径 E:\develop\nodeJs\node_global\node_modules,此后所安装的模块都会安装到该路径下。注意:这里在环境变量上配置的路径是 node_global 下的 node_modules 。

此后我们可以在命令行输入以下命令试着安装express:

1.  npm install express -g 
//“-g”这个参数意思是装到global目录下,也就是上面设置 NODE_PATH 路径:E:\develop\nodeJs\node_global\node_modules 里面

安装完毕后可以看到E:\develop\nodeJs\node_global\node_modules已经有express 包了

(2)配置全局安装包的环境变量

在系统环境变量中 Path 中添加路径:E:\develop\nodeJs\node_global 注意:此时添加的路径是 node_global 的路径,因为下载的全局包的可执行脚本都放在这个路径下,全局包的下载路径和可执行脚本的下载路径是不一样的。

这样配置好了之后你下载的全局包就能在任何路径下使用

参考:https://www.cnblogs.com/yominhi/p/7039795.html

1.3、查看npm的配置

1.  $ npm config list

1.4、安装淘宝镜像

1.  npm install -g cnpm --registry=https://registry.npm.taobao.org

2、npm 创建项目(npm init)

使用 npm 初始化项目,先创建一个文件夹,然后在该文件夹目录下执行 npm init 即可,npm 会自动创建一个 package.json 文件。

为区别普通文件夹及项目文件,人们习惯性规定, 项目文件应该包含一个package.json 的文件。 package.json 文件里记录项目的描述信息:项目作者、项目描述、项目依赖哪些包、具体包的版本信息、插件配置信息等等。

使用 npm init 指令创建项目描述文件 package.json。命令行里会以交互的形式让你填一些项目的介绍信息,依次介绍如下:

  • name 项目名称
  • version 项目的版本号
  • description 项目的描述信息
  • entry point 项目的入口文件 (项目被引入后,首先加载的文件)
  • test command 项目启动时脚本命令
  • git repository 如果你有 Git 地址,可以将这个项目放到你的 Git 仓库里
  • contributors -项目的其他贡献者姓名。
  • dependencies 项目的依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
  • keywords 关键词
  • author 作者名字
  • license 项目要发行的时候需要的证书

也可以使用npm init - -yes命令直接使用默认的配置来创建 package.json文件

3、使用npm安装模块(npm install)

执行以下命令行

1.  npm install <package_name>  //模块的名字
2.  npm install gulp@3.9.1  //安装指定版本
3.  npm install webpack@latest //安装最新版本

下载安装好之后,所下载的模块就放在了项目目录下的 node_modules 目录中,可以在代码中直接通过 require('package_name') 引入。但此时并不会将模块依赖写入package.json中,运行 npm install 初始化项目时也不会下载该模块。

3.1、将包安装并保存到生产环境或者开发环境(npm i 模块名 --save、npm i 模块名 -D)**

要安装模块并保存在package.json中应使用以下命令行。下面两中方法在运行 npm install 初始化项目时,都会将模块下载到项目目录下。

安装到生产环境:

1.  npm install vue --save //加入至package.json中的dependencies节点,意思是生产环境所依赖的包
2.  npm i vue -S  //缩写(是大写的S)

安装到开发环境:

1.  npm install vue --save-dev //加入至package.json中的evDependencies节点,意思是开发环境所依赖的包
2.  npm i vue -D  //缩写

3.2、本地安装和全局安装(npm i 模块名 -g)

npm 的包安装分为本地安装(local)、全局安装(global)两种,如果不指定则默认是安装在本地。

本地安装将安装包放在项目文件目录下的 ./node_modules 文件夹中,如果没有 node_modules 目录,会自动生成 node_modules 目录,可以通过 require() 来引入本地安装的包。

全局安装将安装包放在 /usr/local 下或者你的 node 的安装目录,安装后可以直接在命令行里使用。

1.  npm install <package_name>  // 本地安装
2.  npm install <package_name>  -g //全局安装 

3.3、根据package.json文件安装依赖

我们在开发时会安装各种各样的包,当把项目上传到GitHub时不会把 node-modules 文件夹上传上去,如果把项目克隆下来运行就必须先安装依赖。命令如下:

1.  npm install  //安装所有package.json文件中有的包,包括指定的开发环境中依赖的包(即devDependencies 里面的包)和指定的生产环境中依赖的包(即dependencies 里面的包)
2.  npm install --production //只安装指定的生产环境中依赖的包(即dependencies 里面的包)

3.4、devDependencies 和dependencies 的区别

参考:https://juejin.cn/post/7077520444332441630https://juejin.cn/post/7003998535985135652

大概意思就是,实际上自己开发的话写哪个都问题不大,如果是在开发组件库提供给他人使用时,才需要区分。

dependencies: 是项目运行时的依赖,就是程序上线后仍然需要依赖,比如express, 我们程序就是用express 写的,如果没有express, 我们的程序根本无法运行,更直白一点,dependencies 就是我们在程序开发的过程中手动require的模块。进行express 开发时,server.js中,都会写 var express = require(‘express’), 我们程序直接依赖,所以是dependencies.

devDependencies, 开发依赖,就是我们在开发过程中需要的依赖。比如babel, 它只负责转换es6+ 到es5, 转换完成后,我们只要转换后的代码,上线的时候,直接把转换后的代码部署上线,不需要bebal. 这就是开发依赖,只在开发时候起作用, 上线不需要。其实就是我们在使用webpack开发时,它配置文件里所有的依赖,都是开发依赖。

4、卸载模块(npm uninstall)

1.  npm uninstall <package_name>
2.  npm uninstall -g <package_name>  //卸载全局模块
3.  npm uninstall <package_name>  --save //卸载并从package.json中删除

5、查看已安装的模块(npm list)

1.  npm list --depth=0  //查看该项目所安装的模块
2.  npm list --depth=0  -g //查看全局安装的模块
3.  npm list <packagename>  //查看是否安装了该模块

–depth 表示深度,我们使用的模块会有依赖,深度为零的时候,不会显示模块所依赖的模块

6、更新模块(npm update)

1.  npm update <package_name>  
2.  npm update <package_name>  -g //更新全局安装的模块

7、如何离线安装 npm 全局包

7.1、直接复制所有文件

先在外网中安装好全局包,比如 lighthouse,通过以下命令找到全局包的安装目录

1.  npm config get prefix

比如目录为:E:\develop\nodeJs\node_global_modules,此时在该目录下找到以全局包命名的所有文件,和在该目录下的 node_modules 目录下找到以全局包命名即 lighthouse 的文件夹(注意,是在命令行输出的目录下的node_modules文件夹下)。将找到的文件和文件夹复制到内网机器上 npm 全局安装目录的对应位置上即可。

7.2、先复制文件再安装方式

离线安装 npm 全局包,比如在内网中需要安装一个全局包 lighthouse,步骤如下:

先在外网中安装好全局包,通过以下命令找到全局包的安装目录

1.  npm config get prefix

比如目录为:E:\develop\nodeJs\node_global_modules,此时在该目录下的 node_modules 目录下找到以全局包命名即 lighthouse 的文件夹。(注意:是在命令行输出的目录下的node_modules文件夹下找)。将找到的文件夹复制到内网机器上(注意,最好不要直接复制在npm全局安装包的目录下)。

在复制后的文件夹的根目录下执行以下命令:

1.  npm install -g ./包名

3.  //比如
4.  npm install -g ./lighthouse

执行以上命令后,会在 npm 全局包目录下的 node_modules 文件夹下生成一个快捷方式,该快捷方式将会指向上述的文件夹。

8、npx命令

npx是npm的一个伴生命令,在npm5.2以上已经内置,可以直接使用,其它版本需要安装使用。npx的主要功能是让我们可以在命令行管理操作npm依赖。

npx的执行顺序机制是首先会自动检查当前项目中的可执行依赖文件(即./node_modules/.bin下面的可用依赖),如果不存在就会去环境变量 path 中寻找,如果还没有就会自动安装,其安装的依赖位于 node 安装目录中的 node_cache/_npx 之中,所以安装的依赖只是临时的。

它有如下几点用途:

一、可以在命令行中直接执行项目中安装的依赖:

比如要在命令行中使用webpack。我们先安装webpack: npm i webpack --save-dev

如果我们不使用 npx,此时有两种方式可以调用 webpack:

1.  //第一种:根据路径来执行webpack的脚本:
2.  ./node_modules/.bin/webpack

4.  //第二种:使用 npm-run-script 的方式,在package.json的script字段里面执行操作:
5.  首先在script字段定义命令:"script":  {"webpack":  "webpack"},然后在命令行执行 npm run webpack

而使用npx就方便多了,可以直接这样:

1.  npx webpack

二:可以一次性安装临时使用某个依赖

比如我们只是想要一次性使用 babel-cli 来编译代码,并不想要在项目中安装它:

1.  npx babel-cli test.js --presets=es2015,stage2

参考:https://www.cnblogs.com/zhaozhipeng/p/8268563.html

9、nvm安装使用

参考:https://www.jianshu.com/p/13c0b3ca7c71

9.1、nvm安装后vscode不识别node、npm等问题的解决办法

参考:https://blog.csdn.net/qq_25337221/article/details/110925181

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 120,534评论 1 242
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 52,673评论 1 203
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 75,808评论 0 170
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 36,855评论 0 130
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 43,703评论 1 208
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 36,230评论 1 127
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 28,184评论 2 210
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 27,293评论 0 121
  • 想象着我的养父在大火中拼命挣扎,窒息,最后皮肤化为焦炭。我心中就已经是抑制不住地欢快,这就叫做以其人之道,还治其人...
    爱写小说的胖达阅读 26,267评论 5 177
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 30,378评论 0 180
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 27,553评论 1 170
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 28,810评论 1 180
  • 白月光回国,霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前, 不然我有一百种方法让你生不如死。]我...
    爱写小说的胖达阅读 23,081评论 0 25
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 25,708评论 2 166
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 29,607评论 3 175
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 24,561评论 0 4
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 24,541评论 0 114
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 30,852评论 2 192
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 31,226评论 2 189

推荐阅读更多精彩内容