npm重要知识点梳理

Posted lztl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了npm重要知识点梳理相关的知识,希望对你有一定的参考价值。

一、npm配置

运行npm config ls 可查看npm的配置信息

registry: 一个查询服务地址。npm模块下载和更新时,模块压缩包的下载地址需要通过访问该路径来获得。例如设置该路径为国内镜像:npm config set registry https://registry.npm.taobao.org访问该路径+模块名,就会返回包含模块详细信息的json。

cache:缓存目录地址。模块安装或更新时会将压缩包存放在该目录,再解压到项目中的node_modules目录下。修改命令:npm config set cache *

prefix:全局安装地址。修改命令:npm config set prefix *

二、package.json的关键字段

1、scripts : 定义脚本命令

该字段为一个结构如下的对象:

{
  ‘命令名‘: ‘脚本‘,
  ...
}

其中的脚本支持Shell能执行的脚本。

执行 ‘npm run + 命令名‘ 时就会执行该命令名对应的脚本。

同时执行多个语句可以使用符号& :

npm run command1 && npm run command1

一个指令执行完才能执行下一个的话用&& :

npm run command1 && npm run command1

如果需要在执行一条命令之前或之后自动执行其他命令,可以使用npm钩子

npm 脚本有prepost两个钩子,例如执行npm run build的时候,会自动按照下面的顺序执行:

npm run prebuild && npm run build && npm run postbuild

所以通过定义prebuild或postbuild所对应的脚本,就可以让它们在build命令的前后执行。

定义脚本命令的好处是使项目的命令更具一致性。

2、模块信息相关字段

name:包的名称,必须的字段。如果是发布的包那么不能和现有的npm模块名重复。

version:版本号。它与name字段构成模块的唯一标志。

keywords:关键词数组

description:模块的简单描述。和keywords都是和搜索有关

3、main

入口文件,指定了别人使用require加载模块时载入的文件。如果你的模块对外暴露了API,那么该字段至关重要,它指定了模块的入口。

4、license

开源许可证,一种法律许可,确定作者和用户的权利和限制。

5、config 

项目的一些配置信息,可以将相对固定的信息存在该字段中。

6、dependences与devDependences

前者为项目生产环境依赖的包,后者为开发过程中所依赖的包,上线之后就用不到了,也不会被打包至生产环境,例如测试和打包工具等依赖包;

前者安装命令为npm install 模块名 --save,后者为npm install 模块名 --save-dev

7、npm中的变量

项目文件中可以使用 process.env.npm_package 访问到package.json中的字段,如使用 process.env.npm_package_version 可以访问version字段。

而在脚本命令中的访问方式则是:$npm_package_version。此外,npm脚本还可以通过$npm_config_前缀直接访问config字段的信息

例如config字段如下:

"config" : { "port" : "8080" }

那么在脚本中可以使用 $npm_config_port 来访问。

三、其它有用的命令

// 查看版本
npm -v   

// 安装指定版本模块
npm install --save 模块名@版本号
// 更新npm至最新版本 npm install [email protected] -g

// 更新模块
npm update <package>

// 清除npm本地缓存
npm cache clear

// 删除文件,解决文件路径过长而无法删除的问题 先安装npm install rimraf -g
rimraf node_modules

// 强制重新安装
npm install <package> --force

 四、package-lock.json文件

这是项目依赖包发生变化时自动生成的文件,用于记录当前的依赖包和版本,保证项目在每一次安装时都能够下载到相同版本的包,避免因版本更新而造成的兼容性问题。它比package.json记录更多的版本细节。

执行npm install时会根据package.json去安装依赖。而执行npm i 时,如果改了package.json而且package.json和lock文件不同,那么npm会根据package中的版本号以及语义含义去下载最新的包,并更新至lock。如果两者是同一状态,那么执行npm i 都会根据lock下载,不会理会package实际包的版本是否有新。
















以上是关于npm重要知识点梳理的主要内容,如果未能解决你的问题,请参考以下文章

19张图梳理 SpringCloud 中的重要知识点

网络基础200个重要知识点梳理——通信基础(21-32)

19张图带你梳理SpringCloud体系中的重要知识点!

207期19张图带你梳理SpringCloud体系中的重要知识点!

19 张思维导图带你梳理 Spring Cloud 体系中的重要知识点!

ECMAScript 6 知识点梳理