npm使用介绍
npm是什么?
npm
是node.js
的一个包管理工具,方便的使用第三方库,无需每次新建一个项目而导入第三方JS库,使用npm
,只需执行简单的命令就可以添加依赖库了。跟iOS中的Cocoapods
一样,都是为了方便管理包的。npm
主要有以下几种使用场景:
- 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
- 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
- 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
npm使用
使用npm前需要先进行安装node.js
,可以去官网进行下载安装,安装完成后,可以在终端使用npm -v
命令查看node.js
的版本号。
npm初始化
使用npm
进行安装包进,首先需要在项目中进行npm
初始化,创建一个package.json
的文件。在终端执行npm init
,输入命令后,然后一步一步进行设置,主要是设置项目名
,版本号
,项目描述
,入口文件
,测试命令
,git仓库地址
,关键字
,作者
,license
等信息,初始化完成后,创建的package.json
如下所示:
{
"name": "webpack",
"version": "1.0.0",
"description": "webpack demo",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
本地安装
npm
初始化完成后,可以进行安装了,比如需要在项目本地安装 webpack
,执行如下命令进行安装:
npm install --save-dev webpack
- 本地安装完成后,将在项目目录下创建一个
node_modules
的目录,如下所示:
node_modules.png - 安装完成后,还将在
package.json
中的devDependencies
节点下添加包名
和对应的版本号
。
"devDependencies": {
"webpack": "^4.41.5"
}
- 安装完成后,可以通过
require()
来引入本地安装的包。
全局安装
使用全局安装命令,可以将依赖包安装在/usr/local
下或者 node
的安装目录。全局安装的命令如下所示:
npm install --g webpack
- 全局安装完成后,可以直接在命令行里使用。
卸载模块
使用以下命令,可以卸载模块
$ npm uninstall webpack
更新模块
使用以下命令,可以更新模块
$ npm update webpack
搜索模块
使用以下命令,可以搜索模块
$ npm search webpack
package.json
介绍完基本的命令后,就来熟悉下package.json
文件,该文件主要用于记录项目中所用到的模块,当我们从代码仓库中拉取一个项目后,执行npm install
命令时,将自动读取package.json
文件中所有dependencies信息,然后根据dependencies中的信息与node_modules中的模块进行对比,没有的直接下载,已有的将根据对应的版本号进行检查更新。执行完npm install
命令后,如果项目中没有package-lock.json
文件,将生成一个package-lock.json
文件。
package-lock.json
package-lock.json
文件用于记录当前状态下实际安装的各个模块的具体来源和版本号。如果换了一台机器,执行npm install
命令时,将根据package-lock.json
中模块的版本号和来源进行安装,使各机器上安装的模块版本号保持一致。
package.json 属性说明
- name - 包名。
- version - 包的版本号。
- description - 包的描述。
- homepage - 包的官网 url 。
- author - 包的作者姓名。
- contributors - 包的其他贡献者姓名。
- dependencies - 项目在生产环境中依赖的包-install的东西。
- repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
- main - main 字段指定了程序的主入口文件,require('moduleName') 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。
- keywords - 关键字
- devDependencies 项目在开发和测试环境中依赖的包
- scripts 用于配置命令信息,拿到一个项目,不知道执行什么 命令时,可以查看scripts中配置的命令。
dependencies 与 devDependencies 区别
-
概念区别
dependencies
:包含开发环境和测试环境都会用到的依赖包。即是我们生产环境和开发环境中都需要的依赖项。比如我们代码中需要使用的一些第三方库,都将放在dependencies
中。比如我们开发用到的vue
,react
等框架。
devDependencies:包含仅在测试环境中会用到的包。是我们开发时用的依赖项,主要是一些测试工具、打包工具、编译工具,比如
webpack,
babel,
sass`等。 -
命令区别
–save
:把依赖包名称添加到package.json文件dependencies中
–save-dev
:把依赖包名称添加到package.json文件devDependencies中
版本号介绍
先来看下package.json
文件中模块的版本信息,比如^4.41.5
这里面的^
表示啥了。
"devDependencies": {
"webpack": "^4.41.5"
}
在npm
使用语义版本号来管理代码的。语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本号。当代码变更时,版本号按以下原则更新。
- 如果只是修复bug,需要更新Z位。
- 如果是新增了功能,但是向下兼容,需要更新Y位。
- 如果有大变动,向下不兼容,需要更新X位。
版本符号
-
波浪号+指定版本:比如~4.41.5
表示安装4.41.x
的最新版本,但不能低于4.41.5
,就是保持主版本号、次版本号不变,补丁版本安装最新的。
插入号 波浪号+指定版本:比如^4.41.5
表示安装4.x.x
的最新版本,但不能低于4.41.5
,就是保持主版本号不变、次版本号和补丁版本安装最新的。
个人博客