目录
(1)安装并添加条目到 package.json 文件的 dependencies
(2)安装并添加条目到 package.json 文件的 devDependencies
-D和-S的区别:-D安装到开发的库,-S安装到生产环境的库
一、什么是npm
Node.js标准的软件包管理器。
起初是作为下载和管理Node.js包依赖的方式,但其现在也已成为前端JavaScript中使用的工具。NPM是随同Node.js一起安装的包管理工具,能解决Node.js代码部署上的很多问题,常见的使用场景有以下几种:
- 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
- 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
- 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
由于新版的Node.js已经集成了NPM,所以要想使用NPM就得安装Node.js。
二、npm指令
1、安装所有软件包
npm install
在 node_modules
文件夹(如果尚不存在则会创建)中安装项目所需的所有东西
2、安装单个软件包
npm install <package-name>
3、安装软件包的方式
(1)安装并添加条目到 package.json
文件的 dependencies
npm install <package-name> --save
npm install <package-name> -S
(2)安装并添加条目到 package.json
文件的 devDependencies
npm install <package-name> --save--dev
npm install <package-name> -D
-D和-S的区别:-D安装到开发的库,-S安装到生产环境的库
(3)全局安装
可以在系统上的任何位置运行此命令,因为当前所在的文件夹无关紧要
npm install <package-name> --global
npm install <package-name> -g
4、更新软件包
(1)更新全部
npm update
(2)更新单个
npm update <package-name>
5、卸载软件包
(1)卸载根文件夹node_modules的软件包
npm uninstall <package-name>
(2)卸载指定软件包,并从package.json中移出
npm uninstall -S <package-name>
npm uninstall --save <package-name>
npm uninstall -D <package-name>
npm uninstall --save-dev <package-name>
(3)卸载全局软件包
npm uninstall -g <package-name>
npm uninstall --global <package-name>
6、安装指定版本软件包
npm install <package>@<version>
全局安装:
npm install -g webpack@4.16.4
7、查看某软件包安装过的所有版本
npm view <package> versions
8、查看当前安装的所有npm软件包
npm list
查看全局:
npm list -g
9、查看某软件包在npm上的最新版本
npm view [package_name] version
三、软件包的版本
使用语义版本控制作为版本编号。
语义版本控制的概念很简单:所有的版本都有 3 个数字:x.y.z
。
- 第一个数字是主版本。
- 第二个数字是次版本。
- 第三个数字是补丁版本。
当发布新的版本时,不仅仅是随心所欲地增加数字,还要遵循以下规则:
- 当进行不兼容的 API 更改时,则升级主版本。
- 当以向后兼容的方式添加功能时,则升级次版本。
- 当进行向后兼容的缺陷修复时,则升级补丁版本。
包版本的有关符号:
- 无符号: 仅接受指定的特定版本(例如
1.2.1
)。 latest
: 使用可用的最新版本。- ^: 如果写入的是 ^0.13.0,则当运行 npm update 时,会更新到补丁版本和次版本:即 0.13.1、0.14.0、依此类推。
- ~: 如果写入的是 〜0.13.0,则当运行 npm update 时,会更新到补丁版本:即 0.13.1 可以,但 0.14.0 不可以。
- >: 接受高于指定版本的任何版本。
- >=: 接受等于或高于指定版本的任何版本。
- <=: 接受等于或低于指定版本的任何版本。
- <: 接受低于指定版本的任何版本。
- =: 接受确切的版本。
- -: 接受一定范围的版本。例如:2.1.0 - 2.6.2。
- ||: 组合集合。例如 < 2.1 || > 2.6
四、使用软件包
1、安装软件包
2、使用 require
将其导入到程序,例如:const _ = require('lodash')
五、package.json
package.json
文件是项目的清单。 它可以做很多完全互不相关的事情。 例如,它是用于工具的配置中心。 它也是 npm
和 yarn
存储所有已安装软件包的名称和版本的地方。
这里有很多东西:
- name 设置了应用程序/软件包的名称。
- author 列出软件包的作者名称。
- contributors 列出项目贡献者的数组
- bugs 链接到软件包的问题跟踪器,最常用的是 GitHub 的 issues 页面
- homepage 设置软件包的主页
- version 表明了当前的版本。
- license 软件包的许可证
- keywords 此属性包含与软件包功能相关的关键字数组。
- repository 程序包仓库所在的位置。
- description 是应用程序/软件包的简短描述。
- main 设置了应用程序的入口点。
- private 如果设置为 true,则可以防止应用程序/软件包被意外地发布到 npm。
- scripts 定义了一组可以运行的 node 脚本。
- dependencies 设置了作为依赖安装的 npm 软件包的列表。
- devDependencies 设置了作为开发依赖安装的 npm 软件包的列表。
- engines 设置了此软件包/应用程序在哪个版本的 Node.js 上运行。
- browserslist 用于告知要支持哪些浏览器(及其版本)。
以上所有的这些属性都可被 npm 或其他工具使用。
package.json
文件还可以承载命令特有的配置,例如 Babel、ESLint 等。每个都有特有的属性,例如 eslintConfig
、babel
等。 它们是命令特有的,可以在相应的命令/项目文档中找到如何使用它们。
六、package-lock.json
原始的项目和新初始化的项目实际上是不同的。 即使补丁版本或次版本不应该引入重大的更改,但还是可能引入缺陷。
package-lock.json
会固化当前安装的每个软件包的版本,当运行 npm install
时,npm
会使用这些确切的版本。
package-lock.json
文件需要被提交到 Git 仓库,以便被其他人获取(如果项目是公开的或有合作者,或者将 Git 作为部署源)。
当运行 npm update
时,package-lock.json
文件中的依赖的版本会被更新。