Node.js--npm

一、全局安装vs本地安装:
npm install xxx -g :属于全局安装,将包安装在C:UsersadminAppDataRoaming pm ode_modules目录下,同时在node_modules平级目录生成批处理文件,这样可以在任何地方执行xxx的CIL命令。否则需要cd到项目的cmd命令所在目录再执行/双引号包含可执行命令的全路径,很繁琐。全局安装时的包不可以通过 require() 来引入。
 
npm install xxx –save-dev :属于本地安装,将包安装在项目根目录下的node_modules目录下的.bin目录下,生成对应的cmd命令,在项目根目录下可以直接运行。可以通过 require() 来引入本地安装的模块。
 
如果不安装全局包,则在pro目录下是不能执行对应的命令行命令,必须cd到.bin目录下,或者通过npm link命令或通过package.json的scripts字段设置:
"scripts" : {
  "build" : "webpack ./entry.js bundle.js""deploy": "export NODE_ENV=production && `npm bin`/webpack --config webpack.config.production.js && npm start",
}
然后运行npm run build命令。
 
require()查找文件的顺序
当require一个文件模块时,先从当前执行文件平级的的node_modules目录中查找;然后查找上一级的node_modules目录;依次迭代,直到根目录下的node_modules目录。如果还没有查找到指定模块的话,就会去NODE_PATH注册的路径中查找。
require绝对路径的文件,查找时不用去遍历每一个node_modules目录,其速度最快。
 
为什么要全局安装和本地安装两次?
本地安装可以让每个项目依赖独立的包,不受全局包的影响,保证不同版本的包之间的相互依赖,可以通过require()使用引入的模块。是npm的默认安装模式。
全局安装并不依赖引入的模块。它会在'C:UsersadminAppDataRoaming pm'生成对应的cmd文件,保证在任何地方都可以通过命令行执行该程序,不用cd到项目目录执行。如全局安装gulp是为了在任何地方都可以执行gulp任务,本地安装gulp则是为了调用gulp插件的功能。
 
二、npm常用命令
1.安装模块
npm install //安装package.json中定义的所有依赖的包
npm install [<@scope>/]<name>@<version> //安装指定版本的包,如不指定版本,默认安装最新的包
alias: npm i
options:
-S|--save //保存版本信息到package.json文件的dep字段中
-D|--save-dev //保存版本信息到package.json文件的devDep字段中
npm install --production  # 添加了production参数后将仅仅安装package.json中dependencies 里面的包,不会安装devDependencies 里的模块,否则get
all dependencies & devDependencies installed。一个模块不能同时在两种环境中安装。
 
2.卸载模块
npm uninstall <pkg>
aliases: remove, rm, r, un, unlink
options:
-S|--save //删除package.json中dev字段对应的信息
-D|--save-dev //删除package.json中devDep字段对应的信息
 
3.更新模块
npm outdated [<pkg>] //列出所有过时的包
npm update [-g] [<pkg>...] //更新指定包到最新版本;如果未指定,则更新所有包,包括全局和本地 a
liases: up, upgrade
options:同上
 
4.其他命令
npm config set registry https://registry.npm.taobao.org/ //切换镜像
npm config get registry //查看镜像
npm config get prefix //获取全局模块安装路径;
where node //获取node所在路径;
npm <command> -h //查看该命令的所有使用帮助信息;
npm view package@2.3.1 [version|dependencies] //查看远程包内的package.json信息
npm config ls –l //查看npm内置的配置参数
npm install 或者 npm install –save-dev //自动将所在目录的package.json中的模块安装到node-modules文件夹下,不用一个一个安装模块。
npm ls xxx [–depth=0] //查看本地安装的模块版本信息,只看当前目录,不遍历子目录。注意:子模块的devdependency依赖包不会被安装,只安装dep包。
 
三、cnpm
因为npm是从国外服务器下载,经常出现异常,可以使用淘宝团队开发的镜像cnpm,cnpm跟npm用法一样。
安装命令:npm install cnpm -g --registry=https://registry.npm.taobao.org
 
1.create-react-app安装模块慢,可以设置永久使用cnpm:
$:npm config set registry https://registry.npm.taobao.org
$: npm config set registry http://registry.npmjs.org   #官方地址
 
2.使用nrm管理registry地址:
1.安装nrm:npm install -g nrm
2.注册registry地址:
  nrm add npm http://registry.npmjs.org
  nrm add cnpm https://registry.npm.taobao.org
3.切换registry地址
  nrm use npm/cnmp
 
3.依赖包版本管理 
~匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x的包,但是不包括1.3.0。 
^匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,但是不包括2.0.0。
 
 
 

原文地址:https://www.cnblogs.com/absoluteli/p/14124345.html