40 # npm 的使用

简介: 40 # npm 的使用

npm

3n:

  • nrm:node 中源管理工具
  • nvm:node 中的版本管理工具
  • npm:node 的包管理器,管理的都是 node 的模块

第三方模块

分两种:

  • 全局模块:只能在命令行中使用,任何路径都可以
  • 本地模块:开发或者上线使用的

包的初始化工作

npm init
npm init -y

全局模块的安装

npm install nrm -g --registry https://registry.npm.taobao.org

安装完会有一个指向

C:\Program Files\nodejs\nrm -> C:\Program Files\nodejs\node_modules\nrm\cli.js

nrm 不在环境变量 path 里,还能直接使用的原理:

将当前安装的模块放到 npm 目录下(快捷键),当执行 nrm 命令时,会自动执行 cli.js

查看 npm 的所有配置信息

npm config list

nrm 使用可以查看我这篇:使用 nrm 镜像管理工具进行 npm 源管理

自己编写一个全局模块

实现下面命令在控制台执行

kaimo 1 2 3 4 5 6

目前执行肯定是不行的:

按照下面去实现一下

  1. 先初始化包,新建 my-kaimo-pack 包,下面初始化项目
npm init -y

  1. 然后创建 bin 的配置,新建 bin 文件夹,里面添加 kaimo.js,在 package.json 里配置 bin 的配置
"bin": {
    "kaimo": "./bin/kaimo.js"
},

  1. kaimo.js 文件里添加 #! /usr/bin/env node 这行放到头部(就是我们前面分析 require 源码里提到的 Shebang),标明以 node 的方式来执行
#! /usr/bin/env node
console.log("进入 bin 下的 kaimo.js 文件");
console.log(process.argv.slice(2).reduce((x, y) => Number(x) + Number(y)));
  1. 把包放到 npm 全局中(方式一:全局安装,方式二:使用 npm link

这里使用 npm link,它能够避免重复且繁琐的打包发布操作,给开发调试带来便捷,而且使用方法简单。使用 npm linkkaimo.js 模块创建成本地依赖包。

npm link

  1. 执行 kaimo 1 2 3 4 5,可以看到就能执行成功了

  1. 解除 link
npm unlink

安装项目包(开发/生产)

可以使用 npm info xxx 查看包信息

npm i webpack --save-dev
npm i vue
npm i jquery@3.0.0
  • dependencies:项目依赖(–save)
  • devDependencies:开发依赖(–save-dev)
  • peerDependencies:同版本依赖(vue vue-template-compiler)

如果我们没有安装 jquery,又配置了下面的依赖,就会提示

"peerDependencies": {
    "jquery": "^3.0.0"
}

  • bundleDependencies:打包依赖

使用 npm pack 打包时会打进去

"bundleDependencies": [
    "jquery"
]

我们可以看到就 jquery 打包进来了

  • optionalDependencies:可选依赖(可装可不装)

版本问题

  • major.minor.patch:表示破坏性更新.增加功能/修订大版本中的功能.小的bug
  • ^2.0.0:限制大版本
  • ~2.3.0:限制中版本
  • >=
  • <=
  • 1.0.0-2.0.0
  • alpha:内测版本 beta:公测版本 rc:最终测试版 (2.1.0-beta.1)

运行脚本问题

添加脚本

"scripts": {
    "kaimo": "node ./bin/kaimo.js"
},

传参加 --

npm run kaimo -- 1 2 3 4 5

在看个例子:先安装 mime

npm i mime

添加脚本:

"scripts": {
    "kaimo": "node ./bin/kaimo.js",
    "mime": "mime"
},

这里为什么 npm run mime -- a.js 可以,mime a.js 不行?

执行 npm run env,可以看到 Path 变量里添加了 .bin

正因为默认运行 npm run 时会将 node_modules 下的 .bin 目录放到全局下,所有可以使用当前文件下的命令。

另外一种方案就是使用 npx 命令:npm 5.2 之后提供的(这个命令没有 npm run 好管理),npx 可以去下载包,下载完毕后执行,执行后会删除包,所以每次都是拿的最新包去执行

npm uninstall mime
npx mime a.js

目录
相关文章
|
开发框架 前端开发 Java
SpringCloud微服务实战——搭建企业级开发框架(十九):Gateway使用knife4j聚合微服务文档
本章介绍Spring Cloud Gateway网关如何集成knife4j,通过网关聚合所有的Swagger微服务文档 1、gitegg-gateway中引入knife4j依赖,如果没有后端代码编写的话,仅仅引入一个swagger的前端ui模块就可以了
1169 57
SpringCloud微服务实战——搭建企业级开发框架(十九):Gateway使用knife4j聚合微服务文档
|
9月前
|
存储 NoSQL Redis
Redis数据结构精讲:选择与应用实战指南
Redis数据结构精讲:选择与应用实战指南
1357 1
|
9月前
|
存储 JavaScript 安全
npm详解
npm详解
1363 4
|
9月前
|
Java 网络安全 网络协议
IDEA实现java远程调试
IDEA实现java远程调试
1165 3
|
9月前
|
Web App开发 监控 网络协议
实用的chrome命令
实用的chrome命令
1389 4
|
6月前
|
JavaScript
cnpm 的安装与使用
本文介绍了npm和cnpm的概念、安装nodejs的步骤,以及cnpm的安装和使用方法,提供了通过配置npm使用中国镜像源来加速包下载的替代方案,并说明了如何恢复npm默认仓库地址。
cnpm 的安装与使用
|
前端开发 程序员 开发者
免费下载!程序员入门系列教程之《零基础CSS入门教程》重磅推出
本书由阿里云开发者社区联合乘风者计划专家博主陈文阳共同推出。
24330 8
免费下载!程序员入门系列教程之《零基础CSS入门教程》重磅推出
EMQ
|
8月前
|
安全 开发工具 数据安全/隐私保护
MQTT 5.0 报文解析 06:AUTH
MQTT 5.0 引入了增强认证特性,它使 MQTT 除了简单密码认证和 Token 认证以外,还能够支持质询/响应风格的认证。为了实现这一点,它在原先 CONNECT 和 CONNACK 报文的基础上,又引入了 AUTH 报文来实现任意多次的认证数据交换,以支持各种不同类型的认证机制,例如 SCRAM、Kerberos 认证等等。
EMQ
355 13
MQTT 5.0 报文解析 06:AUTH
|
9月前
|
算法 数据可视化 调度
数学建模——农村公交与异构无人机协同配送优化
数学建模——农村公交与异构无人机协同配送优化
6010 3
|
9月前
|
人工智能 IDE Devops
通义灵码技术解析,打造 AI 原生开发新范式
本文第一部分先介绍 AIGC 对软件研发的根本性影响,从宏观上介绍当下的趋势;第二部分将介绍 Copilot 模式,第三部分是未来软件研发 Agent 产品的进展。
73050 7

热门文章

最新文章