npm笔记

npm笔记

参考自:
1. npm 常用命令详解
2. npm入门文档
3. npm 中文文档

概念理解

什么是NPM

NPM的全称是Node Package Manager,是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:

  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

npm 由三个独立的部分组成:网站、注册表(registry)和命令行工具(CLI)。网站主要是让用户查找 package 的;注册表(registry)是一个巨大的数据库,保存了每个 package 信息的;命令行工具(CLI)是开发者用来发布自己的 package 到注册表或者下载所需 package 的工具。

由于新版的nodejs已经集成了npm,所以直接安装nodejs就可以了。

什么是包/模块

nodejs以包的形式组织程序模块,而包的定义却十分简单——包含文件内容符合规范package.json文件的目录或归档文件,并通过”package-name”@”version”来唯一标识每个包。

package.json

这里写图片描述

包的定义和NPM都围绕着package.json文件做文章,package.json文件其实就相当于JAVA中的MANIFEST.MF文件,用于存放模块的名称、版本、作者、机构、模块入口、依赖项等信息。首先我们通过

npm init

命令在当前工作目录下以用户引导的方式创建一个全新的package.json文件。然后通过

npm help json

命令打开帮助文档,并根据实际的项目需求自行初始化package.json的项目即可。下面将对基础配置项进行叙述:

  • name:必选项,表示模块名称。命名时不能包含js、node、和url中需要转义的字符,不能以._为开头。
  • version:必选项,表示模块的版本号。版本号以主版本号(Major).副版本号(Minor).补丁版本号(Patch)构成(如1.2.0)。 而engines、dependencies和devDependencies等配置项中可使用语义化版本号语法,具体如下(假设当前版本号是 1.1.0):
    • 兼容模块新发布的补丁版本:~1.1.0、1.1.x、1.1
    • 兼容模块新发布的小版本、补丁版本:^1.1.0、1.x、1
    • 兼容模块新发布的大版本、小版本、补丁版本:*、x
  • main:必选项,模块入口文件相对路径(相对于模块根目录)。
  • description:可选项,表示模块功能描述,显示在npm search "package-name"
  • keywords:可选项,数组类型,表示模块的关键字,显示在npm search "package-name"
  • homepage:可选项,包的官网 url 。
  • author:可选项,表示包的作者姓名。
  • contributors:可选项,包的其他贡献者姓名。
  • repository:可选项,源码托管地址。
  • scripts:可选项,自定义在cli中输入npm "script"时实际执行的程序。npm默认提供大量的script供我们调用。
  • engines:可选项,依赖的node版本。
  • dependencies、devDependencies:可选项,用于配置模块的生产环境依赖包和开发环境依赖包。当执行npm install时,npm会根据这两个配置项的值去下载安装相关的依赖包。两者的区别是devDependencies是模块开发过程的依赖包(如:grunt只在开发时有用的模块),并且当其他模块需要依赖当前模块时,当通过npm install “package-name”时会自动下载安装dependencies的包而不会下载devDependencies的包。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。

常用npm命令

  • 查看模块的版本: npm version
  • 安装模块: npm install <Module Name>
  • 查看所有全局安装的模块: npm list -g
  • 查看某个模块的版本号: npm list <Module Name>
  • 卸载模块: npm uninstall <Module Name>
  • 更新模块: npm update <Module Name>
  • 搜索模块: npm search <Module Name>

模块操作

启动模块

npm start [-- <args>]

该命令写在package.json文件scripts的start字段中,可以自定义命令来配置一个服务器环境和安装一系列的必要程序,如

"scripts": {
    "start": "gulp -ws"
}

此时在cmd中输入npm start命令相当于执行gulpfile.js文件自定义的watch和server命令。

如果package.json文件没有设置start,则将直接启动node server.js.

停止模块

npm stop [-- <args>]

重新启动模块

npm restart [-- <args>]

测试模块

npm test [-- <args>]

该命令写在package.json文件scripts的test字段中,可以自定义该命令来执行一些操作,如

"scripts": {
    "test": "gulp release"
},

此时在cmd中输入npm test命令相当于执行gulpfile.js文件自定义的release命令。

npm install安装模块详解

安装包,默认会安装最新的版本

npm install gulp

指定安装版本

npm install gulp@4.6.5

alias: npm i
common options: [-S|--save|-D|--save-dev|-O|--save-optional] [-E|--save-exact] [--dry-run]

保存安装包信息

模块的依赖都被写入了package.json文件后,他人打开项目的根目录(项目开源、内部团队合作),使用npm install命令可以根据dependencies配置安装所有的依赖包

  • -S, –save 安装包信息将加入到dependencies(生产阶段的依赖)
    npm install gulp --savenpm install gulp -S
    package.json 文件的 dependencies 字段:
"dependencies": {
    "gulp": "^3.9.1"
}
  • -D, –save-dev 安装包信息将加入到devDependencies(开发阶段的依赖),所以开发阶段一般使用它
    npm install gulp --save-devnpm install gulp -D
    package.json 文件的 devDependencies字段:
"devDependencies": {
    "gulp": "^3.9.1"
}
  • -O, –save-optional 安装包信息将加入到optionalDependencies(可选阶段的依赖)
    npm install gulp --save-optionalnpm install gulp -O
    package.json 文件的optionalDependencies字段:
"optionalDependencies": {
    "gulp": "^3.9.1"
}
  • -E, –save-exact 精确安装指定模块版本
    npm install gulp --save-exactnpm install gulp -E
    输入命令npm install gulp -ES,留意package.json 文件的 dependencies 字段,以看出版本号中的^消失了
"dependencies": {
    "gulp": "3.9.1"
}

本地安装与全局安装

npm 的包安装分为本地安装(local)、全局安装(global)两种:

npm install express          # 本地安装
npm install express -g   # 全局安装

如果出现以下错误:npm err! Error: connect ECONNREFUSED 127.0.0.1:8087
解决办法为:$ npm config set proxy null

本地安装

  1. 将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。
  2. 可以通过 require() 来引入本地安装的包。

全局安装

  1. 将安装包放在 /usr/local 下或者你 node 的安装目录。
  2. 可以直接在命令行里使用。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值