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 nodeconsole.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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/46.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue Router activated deactivated 路由守卫

6.12.activated deactivated activated和deactivated是路由组件所独有的两个钩子&#xff0c;用于捕获路由组件的激活状态具体使用 activated路由组件被激活时触发deactivated路由组件失活时触发 src/pages/News.vue <template><ul><li :style"{opacity}…

Spring Boot定时任务

目录 1.概述 2.Spring Boot定时任务 2.1.快速使用 2.2.cron表达式 3.业务示例 3.1.业务描述 3.2.业务实现 4.实现原理 5.自定义线程池 1.概述 在某些业务场景中&#xff0c;需要定时执行一些任务&#xff0c;有可能是定时统计然后生成报表&#xff0c;有可能是定时发…

一个好看美观的登录注册界面的实现

序言&#xff1a;之前介绍那个博客&#xff0c;然后自己搞了这个界面。最近有人和我要&#xff0c;把代码给大家贴出来&#xff0c;提供参考。 首先是这个界面哈 <!DOCTYPE html> <html lang"en"> <head><script src"../static/lib/jquer…

mac本地创建ssh key连接github

起因 今天克隆自己github上面的笔记到新电脑上&#xff0c;用http连接进行克隆&#xff0c;然后要我输入账号密码&#xff0c;输入完报了个提示“remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.”…

XHbuilder 需要的 ipa 签名,超详细的教程,你不看吃亏的是自己!

今天使用 hbuilder 运行到 ios 真机的时候&#xff0c;突然发现还需要 ipa 签名&#xff0c;这是什么东东呢&#xff1f; 1、IPA 签名是什么&#xff1f; 因苹果公司禁止企业证书用于非企业内部开发者。所以开发者无法再使用DCloud的企业证书签名的标准运行基座。 运行标准基…

享元模式:减少内存占用的诀窍

一&#xff0c;概要 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;它主要通过共享对象来降低系统中对象的数量&#xff0c;从而减少内存占用和提高程序性能。这听起来有点像单例模式&#xff0c;但它们在实现和用途上有很大的区别。享元…

web前端求职面试题参考精选(合集)

web前端求职面试题之选择题 1. CSS样式表根据所在网页的位置&#xff0c;可分为?(B ) A.行内样式表、内嵌样式表、混合样式表 B.行内样式表、内嵌样式表、外部样式表 C.外部样式表、内嵌样式表、导入样式表 D.外部样式表、混合样式表、导入样式表 2. 对于标签&#xff0…

01 | 一条 SQL 查询语句是如何执行的?

以下内容出自 《MySQL 实战 45 讲》 一条 SQL 查询语句是如何执行的&#xff1f; 下面是 MySQL 的基本架构示意图&#xff0c;从中可以清楚地看到 SQL 语句在 MySQL 的各个功能模块中的执行过程。 大体来说&#xff0c;MySQL 可以分为 Server 层和存储引擎层两部分。 Server …

较旧系统的轻量级的LINUX发行版—FATDOG64

导读我们回顾FatDog64 Linux&#xff0c;这个轻量级的Linux发行版可能不是现代的&#xff0c;但它非常适合于老化的计算机&#xff0c;fatdog64 Linux是一个小而灵活的64位多用户Linux发行版。 有一个Linux发行版几乎每一个都需要&#xff0c;有Linux分布的黑客&#xff0c;天…

Jenkins在Ubuntu的安装问题

使用apt安装没有成功&#xff0c;各种报错。最后使用了离线安装方式。 1、安装jdk。和之前的安装jdk无异&#xff0c;增加一步 添加一个软链接 sudo ln -s /path/to/java/home/bin/java /usr/bin/java 2、下载deb包&#xff0c;然后安装 2.1、前置步骤&#xff0c;安装可能…

点击向数组中添加对象,并判断是否已经包含了重复值

需求&#xff1a;现在有一堆列表&#xff0c;当我每次点击列表的每一项时&#xff0c;希望将此项添加到一个数组中&#xff0c;并且已添加的数据不能再添加 效果图 实现&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset&quo…

kafka3.x 入门 安装(一)

一、下载地址 http://kafka.apache.org/downloads.html 二、 zookeeper安装教程 https://blog.csdn.net/weixin_43205308/article/details/130426019 三、解压 这里使用的是kafka_2.12-3.0.0.tgz tar -zvxf kafka_2.12-3.0.0.tgz四、修改配置 进入到安装路径的config文件夹下…