npm使用笔记、cnpm、pnmp

本文详细介绍了npm包管理器的基本操作,包括安装、卸载、查看版本和依赖管理。深入探讨了cnpm的安装和使用,以及--save和--save-dev的区别。同时,解释了package.json和package-lock.json的作用,以及dependencies和devDependencies的区别。


npm是什么?
node package manager(node 包管理器)
rpm呢?
red-hot package manager (linux red-hot 包管理器)
所以一看到 *pm,就先想到 包管理器。

基本操作

查看版本和升级:

npm -v

查看安装列表:

npm list -g    ## 查看安装列表(全局) 注:加上-g后有可能反而看不到信息,例如某个包是当前环境有的,但是未设置为全局,那么反而为空(empty)
npm list yarn   ## 查看是否安装某个包
npm cache clean -f   ## 清理缓存, -f 是force
npm install命令

这个命令有点特殊,所以特意说下。
1、install + 包名。 # 安装具体的包
2、install 不加内容。 # 根据package.json安装需要的包
3、安装的时候网会比较卡,因为会下载模块。

npm install vue-router # 安装具体的包
npm  install  npm -g    # 根据package.json安装需要的包

安装cnpm

cnpm可以理解为npm的升级版。
安装命令:

npm install -g cnpm --registry=https://registry.npm.taobao.org

–save 和 --save-dev的区别

使用–save安装的打包都打进去,
简写–S
装入dependencies套件中
打包计算在内

使用–save-dev安装的不进行打包,
简写–D
装入devDependencies套件中
打包不计算在内

其他命令

npm install xxx -g  #将模块安装到全局环境中 (全局的安装是供命令行使用的)
npm init  # 会引导你创建一个package.json文件,包括名称、版本、作者这些信息等
npm ls # 查看安装的模块及依赖
npm ls -g # 查看全局安装的模块及依赖
npm uninstall xxx  (-g) # 卸载模块
npm cache clean # 清理缓存
npm ls # 列出当前安装的了所有包
npm root # 查看当前包的安装路径
npm root -g  # 查看全局的包的安装路径
npm help  # 帮助,如果要单独查看install命令的帮助,可以使用的npm help install

package.json和package-lock.json的作用

package.json 的作用
非常重要,它是包的描述文件,依赖的安装就是根据这个文件来的。

package-lock.json文件锁定所有模块的版本号,包括主模块和所有依赖子模块。当你执行npm install的时候,node从package.json文件读取模块名称,从package-lock.json文件中获取版本号,然后进行下载或者更新。

因为package-lock.json文件锁定了版本号,所以当你执行npm install的时候,node不会自动更新package.json文件中的模块,必须用npm install packagename(自动更新小版本号)或者npm install packagename@xxx(指定版本号)来进行安装才会更新,package-lock.json文件中的版本号也会随着更新。

dependencies和devDependencies

2个都是管理依赖包的。
dependencies是运行所需的包,
devDependencies不是运行所需的包,例如打包工具等。如果不区分的话,都进行打包,那么包会非常大。

并没有修改package.json文件,为什么我的package.json被修改了。

首先npm install是不会修改package.json的。
在npm install xxx 的时候,会给package.json添加devDependencies模块。

# 卸载、安装依赖包

这里以webpack为例:

npm uninstall webpack -g 
npm uninstall webpack -D
npm install webpack@^4.0.0 -g
npm install webpack@^4.0.0 -D

npm可以管理maven包吗?

很明显不能啊,主要用于管理前端包。

清除缓存

命令:

npm cache clean --force

一般这几种情况需要清理缓存。
‌1、缓存导致安装失败‌:当npm缓存中的数据损坏或过时时,可能会导致包安装失败,清除缓存可以解决这些问题‌。
2、安装到旧版本‌:有时候npm会使用缓存中的旧版本包,而不是最新的版本,清除缓存可以确保安装最新的版本‌。
3、‌手动清理缓存‌:如果你需要手动清理缓存,可以使用这个命令来删除缓存目录中的所有内容‌。
4、磁盘空间不足‌:如果缓存占用了大量磁盘空间,且手动删除缓存目录无效,可以使用这个命令来强制清除缓存‌。

npm配置相关

可以直接到文件里看或修改,也可以通过命令来查看或修改。
1、npm配置文件是 .npmrc,默认在用户目录下。
如果没有找到,用命令来看下在哪里。
2、命令。

npm config get userconfig  ## 查看配置文件路径,

以下config命令也是很好用:

npm config ls -l  ## 查看所有配置项
npm config get cache  ## 查看缓存配置,get后面可以跟任意配置项
npm config edit  ## 直接编辑config文件,这个会打开文本
config配置文件示例

内容比较多,贴出来万一用到方便。

熟悉常用的几个即可。
prefix # 本地仓库地址
cache # 缓存地址

示例:

; "default" config from default values

_auth = (protected)
access = null
all = false
allow-same-version = false
also = null
audit = true
audit-level = null
auth-type = "web" 
before = null
bin-links = true
browser = null
ca = null
cache = "C:\\Users\\PC\\AppData\\Local\\npm-cache"
cache-max = null
cache-min = 0
cafile = null
call = ""
cert = null
cidr = null
color = true
commit-hooks = true
cpu = null
depth = null
description = true
dev = false
diff = []
diff-dst-prefix = "b/"
diff-ignore-all-space = false
diff-name-only = false
diff-no-prefix = false
diff-src-prefix = "a/"
diff-text = false
diff-unified = 3
dry-run = false
editor = "C:\\Windows\\notepad.exe"
engine-strict = false
fetch-retries = 2
fetch-retry-factor = 10
fetch-retry-maxtimeout = 60000
fetch-retry-mintimeout = 10000
fetch-timeout = 300000
force = false
foreground-scripts = false
format-package-lock = true
fund = true
git = "git"
git-tag-version = true
global = false
global-style = false
globalconfig = "C:\\Users\\PC\\AppData\\Roaming\\npm\\etc\\npmrc"
heading = "npm"
https-proxy = null
if-present = false
ignore-scripts = false
include = []
include-staged = false
include-workspace-root = false
init-author-email = ""
init-author-name = ""
init-author-url = ""
init-license = "ISC"
init-module = "C:\\Users\\PC\\.npm-init.js"
init-version = "1.0.0"
init.author.email = ""
init.author.name = ""
init.author.url = ""
init.license = "ISC"
init.module = "C:\\Users\\PC\\.npm-init.js"
init.version = "1.0.0"
install-links = false
install-strategy = "hoisted"
json = false
key = null
legacy-bundling = false
legacy-peer-deps = false
link = false
local-address = null
location = "user"
lockfile-version = null
loglevel = "notice"
logs-dir = null
logs-max = 10
; long = false ; overridden by cli
maxsockets = 15
message = "%s"
node-options = null
noproxy = [""]
npm-version = "10.2.4"
offline = false
omit = []
omit-lockfile-registry-resolved = false
only = null
optional = null
os = null
otp = null
pack-destination = "."
package = []
package-lock = true
package-lock-only = false
parseable = false
prefer-dedupe = false
prefer-offline = false
prefer-online = false
; prefix = "C:\\Program Files\\nodejs" ; overridden by builtin
preid = ""
production = null
progress = true
provenance = false
provenance-file = null
proxy = null
read-only = false
rebuild-bundle = true
; registry = "https://registry.npmjs.org/" ; overridden by user
replace-registry-host = "npmjs"
save = true
save-bundle = false
save-dev = false
save-exact = false
save-optional = false
save-peer = false
save-prefix = "^"
save-prod = false
sbom-format = null
sbom-type = "library"
scope = ""
script-shell = null
searchexclude = ""
searchlimit = 20
searchopts = ""
searchstaleness = 900
shell = "C:\\Windows\\system32\\cmd.exe"
shrinkwrap = true
sign-git-commit = false
sign-git-tag = false
strict-peer-deps = false
strict-ssl = true
tag = "latest"
tag-version-prefix = "v"
timing = false
umask = 0
unicode = false
update-notifier = true
usage = false
user-agent = "npm/{npm-version} node/{node-version} {platform} {arch} workspaces/{workspaces} {ci}"
userconfig = "C:\\Users\\PC\\.npmrc"
version = false
versions = false
viewer = "browser"
which = null
workspace = []
workspaces = null
workspaces-update = true
yes = null

; "builtin" config from C:\Program Files\nodejs\node_modules\npm\npmrc

prefix = "C:\\Users\\PC\\AppData\\Roaming\\npm"

; "user" config from C:\Users\PC\.npmrc

registry = "https://registry.npmmirror.com/"

; "cli" config from command line options

long = true

cnpm和npm和pnpm的区别

npm:
npm全称Node Package Manager,是 Node.js 平台的默认软件包管理器,用于安装、发布和管理 Node.js 应用程序和软件包。它是一个命令行工具,允许开发人员在他们的项目中轻松地管理依赖项、安装软件包、更新软件包版本以及执行其他与软件包相关的任务。npm 是 nodejs 中的一部分,通常与 nodejs 一起安装和更新。当你安装了 nodejs,npm 也随之安装。

cnpm:
cnpm(China Node Package Manager)是一个为中国大陆用户定制的 npm(Node Package Manager)镜像,由阿里巴巴的淘宝团队开发和维护。由于 npm 的原始服务器位于国外,对于中国大陆的用户来说,下载和安装 Node.js 包时可能会遇到速度较慢或连接不稳定的问题。为了解决这个问题,cnpm 镜像被创建出来,以提高下载速度和稳定性。对于国内的大型企业内部开发项目,尤其是对网络速度有一定要求且注重稳定性的项目,cnpm是很好的选择。

pnpm:
pnpm是一个高效的 npm 包管理工具,它旨在解决包依赖管理时的一些常见问题。与npm和yarn不同,pnpm使用一种称为“符号链接”的方法来管理包依赖,称为硬链接(hard links),这可以节省磁盘空间并提高安装速度,并确保同一个包的不同版本之间共享尽可能多的代码。

当开发人员在本地机器或者小型服务器上进行开发,磁盘空间比较紧张时,pnpm是首选。例如,一些嵌入式开发环境或者老旧设备上的Node.js开发项目,pnpm通过硬链接和符号链接共享依赖项的方式,可以极大地节省磁盘空间。一个包含大量依赖包的项目,使用npm或cnpm可能会占用数GB的磁盘空间,而pnpm可能只需要几百MB。

其他

官网地址

https://www.npmjs.com/ # 在这里可以搜索包,查看文档等

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值