Skip to content

npm

npm 简介

npm npm 全称为:,中文意思是【Node 包管理工具】,它是 Node 内置的包管理工具,安装了 Nodejs 就自动拥有了 npm。

npm 版本

可以通过 查看版本号测试,如果显示 npm 版本号说明安装成功。

npm版本

初始化包

创建一个空目录,然后在此目录下,执行 npm init,该命令的作用是:将文件夹初

初始化包

根据提示,进行包的核心配置:

包的核心配置

初始化成功后,会出现一个 package.json,这是包的配置文件,每个包都必须要有 package.json 它是包的说明文件,package.json 内容示例:

json
{
  "name": "npm-test",           # 包的名称
  "version": "1.0.0",           # 包的版本
  "description": "npm初始化",   # 包的描述
  "main": "index.js",           # 包的入口文件
  "scripts": {                  # 脚本配置
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "折木",              # 作者
  "license": "MIT"               # 开源证书
}

初始化的过程中还有一些注意事项:

提示

  1. name(包名)不能有中文、不能大写,默认值是文件夹名称。
  2. version(版本号)要求 x.x.x 的形式定义,× 必须是数字,默认值是 1.0.θ。
  3. package.json 也可以手动创建与修改
  4. 使用 npm init-y 或者 npm init --yes 极速创建 package.json。
  5. 点击了解 👉️:开源证书相关 1开源证书相关 2

搜索包

搜索包的方式有两种:
命令行搜索: 或者
网站搜索:https://www.npmjs.com

安装包

以安装 uniq 这个包为例,安装命令如下:

npm install uniq --save 或 npm i uniq -S

运行之后文件夹下会增加两个资源

  • :该文件夹中存放下载好的包。
  • :包的锁文件,用来锁定包的版本。

关于 package-lock.json 中的版本限制的说明:

除了^还有以下写法:

  • ^:锁定主版本号,接受所有以 1 开头的版本,如:1.0.2 等,但不包括 2.0.0。
  • ~:允许安装小版本的更新,但不包括次要版本的更改。~1.0.1 允许 1.0.x。、
  • > :允许比指定版本更高的版本,但不包括指定版本本身。>1.0.1 允许 1.0.2、1.1.0、2.0.0 等。
  • <:允许比指定版本更低的版本。<1.0.1 允许 1.0.0 及更早的版本
  • > =:允许指定版本及更高的版本。>=1.0.1 允许 1.0.1 及其之后的版本。
  • <=:允许指定版本及更低的版本。<=1.0.1 允许 1.0.1 及其之前的版本。
  • *:允许任何版本,这种情况下最不限制,但也
  • 如果没有任何符号,只写版本号,如 1.0.1,这意味着严格要求安装这个特定版本。

导入包基本流程

当我们编写了如下代码:

javascript
let uniq = require("uniq");

npm 的引入流程是:

  • 在当前文件夹下 node_modules 中寻找同名的文件夹,若有则使用,若没有进入下一步。
  • 在上级目录中下的 node_modules 中寻找同名的文件夹,直至找到磁盘根目录。

生成环境、开发环境

,一般是程序员的电脑。
,一般是正式的服务器。

生成依赖、开发依赖

:只有开发环境用到的包,是开发依赖包。
:开发环境、生产环境都要用的,是生产依赖包。
举例理解:

做蛋炒饭需要:等。
其中:属于开发依赖,只在制作阶段使用。
其中:属于生产依赖,在制作阶段、最终成品都会用到。

思考:如何快速区分一个包是生产依赖,还是开发依赖?

  • 帮我们实现【功能效果】的库==> 生产依赖
  • 帮我们进行【加工代码】的库==> 开发依赖
操作命令
安装生产依赖npm install ??? --save
npm install ??? -s
安装开发依赖npm install ??? --save-dev
npm i ??? -d

例如:我们编译 less 文件需要下载 less 包,less 就是开发依赖

javascript
const less = requestuire("less");
const fs = requestuire("fs");

fs.readFile("styles.less", "utf8", function (err, data) {
  if (err) {
    return console.error(err);
  }
  less.render(data, function (e, output) {
    fs.writeFile("styles.css", output.css, function (err) {
      if (err) {
        return console.error(err);
      }
      console.log("less样式解析完毕");
    });
  });
});

全局安装

使用-g 进行全局安装:

shell
npm i nodemon -g

全局安装 nodemon 之后,就有了 nodemon 命令,作用是:

说明:

  • 全局安装的命令不受工作目录位置影响。
  • 通过 npm root -g 可以查看全局安装包的位置。
  • 通过 npm list -g 查看全局安装了那些包。
  • ,通常是命令行工具包,才适合全局安装。

安装全部依赖

通过 npm i 或 npm install 命令 ,可依据 package.json 和 package-lock.json 安装项目依赖。

npm i 或 npm install

若只想安装生产依赖,可以使用 npm install --prod 或 npm i --omit=dev

npm install --prod 或 npm i --omit=dev

注意:

node_modules 文件夹是不会接受版本控制的。

安装指定版本

项目中可能会遇到版本不匹配的情况,有时就需要安装指定版本的包,可以使用如下命令:

npm i 包名@版本号

删除依赖

项目中可能需要删除某些不需要的包,可以使用下面的命令

局部删除 npm remove <对应包名> npm r <对应包名>

全局删除 npm remove <对应包名> -g npm r <对应包名> -g

配置命令别名

通过配置命令别名可以更简单的执行命令,配置 package.json 中的 scripts 属性

json
{
  *********
  *********
  "scripts": {
    "server": "node server.js",
    "start": "node index.js",
  },
  *********
  *********
}

配置完成之后,可以使用别名执行命令

shell
npm run server
npm run start

start 别名比较特别,使用时可以省略 run

shell
npm start

补充说明:

是项目中常用的一个命令,一般用来启动项目。
有自动向上级目录查找的特性,跟 requestuire 函数也一样。

对于陌生的项目,我们可以通过查看 属性来参考项目的一些操作。