什么是npm?
npm的全称是Node Package Manager,是一个NodeJS的包管理和分发工具。
简单的讲,npm就是现代工程化的JavaScript项目中的依赖管理工具,工程化项目中的JavaScript 依赖包全部通过npm工具进行安装和管理,开发者也可以通过npm工具发布个人开发的依赖包项目提供给世界范围内的程序员使用。
如何使用npm
本地安装了NodeJS环境后,在系统的命令行工具中除node命令外,还包含npm命令。npm命令可以帮 助开发者快速的安装和管理项目。
查看npm版本的方式
npm -v
控制台上会展示当前npm以来的版本信息
7.19.1
查看npm可用功能
开发者成功安装了npm依赖管理工具后,可以通过命令行的方式查看npm所包含的所有功能,利用 npm -h 指令可用查看所有npm的功能命令。
npm install install all the dependencies in your project
npm install <foo> add the <foo> dependency to your project
npm test run this project's tests
npm run <foo> run the script named <foo>
npm <command> -h quick help on <command>
npm -l display usage info for all commands
npm help <term> search for help on <term> (in a browser)
npm help npm more involved overview (in a browser)
# 所有可用命令列表
All commands:
access, adduser, audit, bin, bugs, cache, ci, completion,
config, dedupe, deprecate, diff, dist-tag, docs, doctor,
edit, exec, explain, explore, find-dupes, fund, get, help,
hook, init, install, install-ci-test, install-test, link,
ll, login, logout, ls, org, outdated, owner, pack, ping,
prefix, profile, prune, publish, rebuild, repo, restart,
root, run-script, search, set, set-script, shrinkwrap, star,
stars, start, stop, team, test, token, uninstall, unpublish,
unstar, update, version, view, whoami
npm镜像管理配置
由于日常的大量的npm依赖都通过世界的npm依赖中心提供,所以使用npm工具安装JavaScript依赖的时候需要开发者必须连接互联网,此时就涉及到npm的镜像地址配置工作了。 由于不同国家的开发者所存在的网络环境不同,而npm的依赖对于国内开发者来说都是保存在国外,所以使用npm下载依赖包时连接默认地址会出现访问慢的问题,所以在安装npm依赖管理工具时大多数人都会先使用配置工具将镜像地址进行修改。
查看当前的npm镜像地址
npm config get registry
设置npm的镜像地址
npm config set registry "镜像地址"
常用的npm镜像地址
npm ---------- https://registry.npmjs.org/
yarn --------- https://registry.yarnpkg.com/
tencent ------ https://mirrors.cloud.tencent.com/npm/
cnpm --------- https://r.cnpmjs.org/
taobao ------- https://registry.npmmirror.com/
npmMirror ---- https://skimdb.npmjs.com/registry/
npm镜像管理工具nrm
- 安装指令
npm i nrm -g
- 列出所有可用的地址
nrm ls
- 添加新的地址
nrm add
<key> <address>
- 删除已有的地址
nrm del
<key>
- 切换现有的镜像地址
nrm use
<key>
npm config的介绍
npm的命令行工具不仅仅可以切换镜像地址,还可以对npm所有的属性进行设置,在上面的章节中展
示了设置或获取镜像地址的完整指令为npm config get/set registry [<address>]
实际上 npm config 部分就代表操作了npm的配置文件的某个属性,所以set和get对应的就是获取或设置指定属性的结果。
列出npm默认配置信息
npm config list
企业级npm包管理器实用攻略
对于npm的应用其实大多数开发者涉及到的场景都是以下集中情况:
- 安装项目的所有依赖包 npm install
- 安装执行依赖包到项目 npm install
- 删除置顶依赖包 npm uninstall
- 执行项目的功能脚本
npm run build #构建项目
npm run dev/serve/start #运行项目
npm run eslint/... #其他项目功能
若仅掌握以上类型的npm指令正常在开发过程中能解决日常的大部分问题,但是对于想要晋升的开发者来说,如果只对npm了解的很片面代表所从事的项目级别和研发级别不是很高,所以接下来围绕Node项目进一步的了解npm。
初始化工程项目
对于工程化项目来说,仅仅创建一个文件夹是不够的,我们需要在创建文件夹的基础上为该项目创建一个描述文件,也即是在前端项目中特别常见的package.json文件。那么这个文件究竟包含多少属性,每个属性有什么样的规则呢?
通过npm init -h可以查看该指令的使用方式
初始化一个项目
-
在编辑器中创建一个文件夹test
-
在命令行工具中打开test文件夹并且输入指令
npm init -y
- 命令行工具中会弹出如下日志,并且文件夹中会自动生成package.json配置文件
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
- 打开package.json文件查看默认属性
{
"name": "test",//项目名称
"version": "1.0.0",//项目当前的版本号
"description": "",//项目的描述内容
"main": "index.js",//项目作为依赖包被别人引用时所执行的文件
"scripts": { //项目的调试命令
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],//项目作为依赖发布后的搜索关键字
"author": "", //项目作者
"license": "ISC"//软件许可证
}
依赖管理介绍
安装项目依赖通过 npm install 指令完成,不过npm安装依赖的方式多种多样,并且存在很多的指令组合,可以使用 npm install -h 查看可用的npm安装方式
实际开发者使用更多的是如下几个指令:
npm install xxx -S|--save|-s#代表本地安装一个依赖包在项目中使用npm install xxx -D|--save-dev#代表安装一个依赖包到项目,该依赖包为运行项目所需的依赖
npm install xxx -g|--global#代表全局安装一个依赖包到npm本地电脑的全局依赖文件夹中
全局安装的依赖可以通过如下指令查看:
npm ls -g
除以上几个指令外,实际上npm安装依赖时还可以选择如下指令:
npm install xxx --save-optional #代表可选依赖 npm install xxx --save-peer #代表当前项目作为依赖包提供给其他项目使用时,项目需要自行安装当前依赖
npm依赖加载规则
bin属性介绍
我们发现在使用npm安装依赖时,并不是所有依赖都是需要import到我们的项目中才能运行的依赖, 比如nrm包就是当项目安装后,会在全局命令行工具中默认可以使用nrm指令来操作镜像地址。这个能力取决于package.json的bin属性。
接下来继续通过实践的方式学习如何创建带有命令行工具的项目。
-
在编辑器中创建名为demo的项目
-
在项目的根目录中创建bin文件夹并在其中创建index.js文件
-
在index.js文件中编写如下命令
#!/usr/bin/env node
console.log('hello demo')
所声明的部分代表通过node命令行工具执行该文件 console.log('hello demo')
-
执行 npm init -y 命令初始化package.json
-
在demo根目录下创建一个空的index.js文件(此步骤为支持打包构建)
-
在package.json文件添加bin属性,将该属性的值改为
"bin": {
"my-script": "./bin/index"
},
-
将我们当前的项目变成一个真正的依赖包,这里便需要一个指令
npm pack,运行它 -
会发现本项目中出现名为demo-1.0.0.tgz的文件,这个文件便是我们平时使用
npm install所安装的依赖包的本体 -
接下来需要将当前的demo安装包安装到我们的本地电脑上作为全局依赖,所以需要在命令行工具 中打开demo目录并执行指令
npm i ./demo-1.0.0.tgz -g -
安装完毕后执行
npm ls -g会发现我们的demo项目会包含在全局的npm依赖列表中 -
接下来在命令行工具中执行命令
my-script
命令行会出现 hello demo