-
2022-04-14 14:21:59
前言
平时使用手机和电脑下载软件的时候,都存在一个方便的应用商店。
对于程序员来说,日常开发会使用到各种不同的环境包和工具,那么这些东西除了从各个工具的官网下载,能不能从应用商店下载到?
答案是一般不能,因为这些东西不是一般普通人经常使用的软件,所以应用商店不会上这些软件,导致大家不能搜到这些软件。
由于以上相关需求的推动,诞生了homebrew,官方介绍:macOS(或 Linux)缺失的软件包的管理器。
步骤
1.访问官网
macOS(或 Linux)缺失的软件包的管理器 — Homebrew
2.在终端执行
官方推荐:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
国内由于网速限制,需要替换镜像源,使用中科大镜像加速访问,建议先用官方的,不行再使用这个
/usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)"
3.安装以后的基本配置概念
(1)Homebrew主要由四部分组成,分别提供下载不同类型的文件功能
名称 说明 brew Homebrew源代码仓库 homebrew-core Homebrew核心软件仓库 homebrew-bottles Homebrew预编译二进制软件包 homebrew-cask MacOS客户端应用 (2)下载软件的时候,由于不同地区的网速问题,homebrew提供了命令,可以替换默认地址为对应国内的镜像源,可以提高下载速度。
由于镜像源可能存在变化的可能,所以这里不写这部分教程,具体替换可以网上搜索关键词:homebrew镜像源替换
(3)使用homebrew的目的,就是让homebrew帮忙管理软件的下载、管理和卸载等生命周期,用户直接关注使用软件本身就行了,提高了效率,所以homebrew下载后的软件地址,不要轻易移动,防止出现各种问题,一般在隐藏目录/usr/local下面。
4.homebrew经常使用的命令
//查询所有命令 brew --help // 查询软件 brew search 软件名 // 查看软件信息 brew info 软件名 // 安装软件 brew install 软件名 // 卸载软件 brew uninstall 软件名
更多相关内容 -
node版本管理工具n包使用教程详解
2020-10-17 18:29:17主要介绍了node版本管理工具n包使用教程详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
股权工具包+企业日常管理
2020-09-12 17:26:35本工具包包含全面的创业公司所需的资料,包含最新的股权方案、合伙人协议、员工入股协议、人力资源必备表格、培训管理、绩效管理、招聘管理、组织机构等,各总文档1800个左右。 -
JS新包管理工具yarn和npm的对比与使用入门
2020-10-20 22:37:39在2016年10月11日facebook 公开了新的javascript包管理工具 yarn, 用来替代目前被广泛使用的npm(nodejs 自带的包管理工具),本文将介绍yarn工具带来的优点和使用入门,以及对比npm解决了什么问题,带来哪些便利。... -
谈谈前端包管理工具 npm & yarn & pnpm
2022-03-12 17:20:46为什么需要包管理工具? 每种主流编程语言都有包管理工具,比如 java 的 Maven、Gradle,Python 的 pip,nodejs 的 npm、yarn、pnpm 等。 包管理工具的主要作用是管理第三方依赖,也可以看成一个"轮子"工厂,每个人...为什么需要包管理工具?
每种主流编程语言都有包管理工具,比如
java
的Maven
、Gradle
,Python
的pip
,nodejs
的npm
、yarn
、pnpm
等。
包管理工具的主要作用是管理第三方依赖,也可以看成一个"轮子"工厂,每个人都可以上传自己造的"轮子"和下载使用别人的"轮子",
包管理工具顾名思义就是统一管理这些轮子的软件或者工具,它以多种方式自动处理项目依赖关系、提供了命令行工具(CLI
)、支持跟踪依赖项和版本等功能,
除此之外还可以安装、卸载、更新和升级包,配置项目设置,运行脚本等等。
有了包管理工具,我们可以很简单地构建一个项目或者引入和管理一个库,留给我们的则是愉快地编码。npm
不只是包管理工具,它是世界上最大的软件注册表(registry
),每星期大约有30亿次
的下载量,包含超过600000个包
,开发者使用npm
互相分享和借鉴。版本管理规范
版本管理规范 - 语义化版本控制规范 SemVer
在使用
npm
和yarn
安装完依赖时,package.json
会有类似以下的版本号:"vue": "^2.6.11", "vue-router": "~3.1.3"
2.6.11
、3.1.3
这个版本号就是遵循了SemVer
语义化版本控制的规范。SemVer
规范规定,版本的格式为:主版本号.次版本号.修订号-预发版本(可选),版本号递增规则如下:- 主版本号:当你做了不兼容的 API 修改
- 次版本号:当你做了向下兼容的功能性新增
- 修订号:当你做了向下兼容的问题修正。
- 预发布版本:
alpha
(Alpha 版本,通常用于进行中的工作和实验)beta
(Beta 版本,通常是下一个计划发布的功能完整的版本,但可能包含已知错误)rc
: 候选版本,通常是可能最终(稳定)的版本,除非出现重大错误。
在 nodejs 版本管理中,还允许使用
~ ^ *
字符来管理版本的范围:^
: 不允许修改最左边非0版本 (^2.6.11
: 版本 >= 2.6.11 且 < 3.0.0)~
: 如果指定了次要版本,则只允许补丁版本更新,如果没有,则允许次要版本更新 (~3.1.3
: 版本 >= 3.1.3 且 < 3.2.0)*
: 任何非预发版本 (版本 >=0.0.0)
前端主流包管理工具
主流的前端包管理工具有
npm
、yarn
、pnpm
、以及国内的镜像cnpm
、tyarn
等,这是包管理器都是基于nodejs
。npm
是 2010 年发布的nodejs
依赖管理工具,在此之前,前端的依赖管理都是手动下载和管理的。yarn
是 Facebook 于 2016 年 发布的替代npm
的包管理工具,还可以作为项目管理工具,定位是快速、可靠、安全的依赖管理工具。pnpm
是 2017 年发布的一款替代npm
包管理工具,具有速度快、节省磁盘空间的特点。2010:npm 发布,支持 Node.js。 2016:yarn 发布,生成 yarn.lock 文件用于确定 repos 的精确版本,并且比 npm 性能更好。 2017:npm 5 发布,提供类似 yarn.lock 的 package-lock.json 文件。 2017:pnpm 发布,pnpm 具有 yarn 相对于 npm 的所有附加功能,并解决了 yarn 没有解决的磁盘空间问题。 2018:npm 6 发布,在 npm 在安装依赖项之前检查安全漏洞,提高了安全性。 2020:yarn 2 和 npm 7 发布,这两个软件包都具有出色的新功能。 2021:yarn 3 发布并进行了各种改进。
yarn
vsnpm
vspnpm
包管理工具安装和版本切换
因为
node
预装了npm
,所以安装node
后,不需要手动安装npm
。相反地,
yarn
需要手动安装。建议全局安装yarn
:npm install yarn -g
然后,我们在项目的根目录设置需要的 yarn 版本:
# yarn set version latest # 最新版 # yarn set version canary # 最新的经典版 # yarn set version classic # 最新的经典版 # yarn set version 3.x yarn set version <version>
使用
Yarn
,在每个项目我们可以使用不同的版本,而在npm
中,要安装nvm
才能完成版本切换。同样的,
pnpm
也需要全局安装,才能使用npm install pnpm -g
pnpm
其他使用命令 和npm
使用方法一致。安装项目依赖
在执行
npm install
安装项目依赖时,依赖项是顺序安装,并且终端会输出很多的警告日志,导致覆盖报错的日志,从而难以排查问题。使用
yarn
安装依赖时,运行yarn
命令即可,yarn
是并行安装依赖项,这是它比npm
快的原因之一,yarn 1
中的日志比较简介干净,是以树形的形式显示,但是在yarn 2
和yarn 3
中日志发生了变化,并不像以前直观。并且,
yarn
还支持离线安装,只要以前装过的包,可以在没有网络链接的情况下进行。yarn
具有重试机制,单个包安装失败不会导致整个安装失败。在
yarn
安装不同版本的依赖时,会将多个版本归结为单个版本,避免创建多个副本。npm
、yarn
和pnpm
常用命令-
npm init
|yarn init
|pnpm init
: 初始化命令 -
npm run
|yarn run
/yarn
|pnpm
: 运行脚本 -
npm publish
|yarn publish
: 发布包 -
npm cache clean
|yarn cache clean
:清除缓存 -
npm install
|yarn
|pnpm install/i
: 安装所有依赖 -
npm install [package]
|yarn add [package]
|pnpm add [package]
: 安装某个依赖项 -
npm install --save-dev/-D [package]
|yarn add --dev/-D [package]
| |pnpm add --dev/-D [package]
: 安装开发依赖 -
npm uninstall [package]
|yarn remove [package]
|pnpm remove/rm [package]
: 卸载依赖 -
npm update
|yarn upgrade
|pnpm update/up
: 更新全部依赖 -
npm update [package]
|yarn upgrade [package]
|pnpm update/up [package]
|: 更新某个依赖
安全性
npm
最不好的缺点之一就是安全性,曾经的版本发生过几个严重的安全漏洞,npm 6
开始则是在安装之前会检查安全漏洞,
并且支持使用npm audit
手动检查安装包的安全性,如果发现安全问题,可以运行npm audit fix
修复漏洞。
因为npm/yarn
是扁平化依赖结构,有个非常严重的问题就是可以非法访问未声明的包,而pnpm
是将依赖通过link
的形式避免了非法访问依赖的问题,如果没在package.json
声明的话,是无法访问的。yarn
和pnpm
同样也支持yarn/pnpm audit
手动检查安装包的安全性。yarn
和npm
都是使用hash加密算法
确保包的完整性。lock 文件
在
package.json
跟踪的依赖项和版本总是不准确的,因为~ ^ *
等前缀表示依赖更新时对应的版本范围。
范围版本可以在更新依赖时自动升级依赖到兼容性的次要版本或者补丁版本,让软件包支持最新的功能或者修复最近的错误。所以,为了避免不同设备安装依赖时的版本不匹配的问题,在
lock
文件中定义了精确的安装版本。在每次新装(更新)依赖时,npm
和yarn
会分别
创建(更新)package-lock.json
和yarn.lock
文件。这样就能保证其他设备安装完全相同的包。在
pnpm
中,则是使用pnpm-lock.yaml
文件定义依赖包的精确版本。性能对比
npm/pnpm/yarn/yarnPnp install
性能对比测试
package.json
位置action cache lockfile node_modules npm pnpm Yarn Yarn PnP install 51s 14.4s 39.1s 29.1s install ✔ ✔ ✔ 5.4s 1.3s 707ms n/a install ✔ ✔ 10.9s 3.9s 11s 1.8s install ✔ 33.4s 6.5s 26.5s 17.2s install ✔ 28.3s 11.8s 23.3s 14.2s install ✔ ✔ 4.6s 1.7s 22.1s n/a install ✔ ✔ 6.5s 1.3s 713ms n/a install ✔ 6.1s 5.4s 41.1s n/a update n/a n/a n/a 5.1s 10.7s 35.4s 28.3s
根据上面的测试结果我们可以看出,首次执行npm install
安装依赖时pnpm
比npm
和yarn
大约快了3 倍
左右,在有缓存和已安装过依赖的情况,比npm
也快了不少,yarn
则是更快,其他场景pnpm
也是占了很大优势。pnpm
的优势速度很快、节约空间
pnpm
的所有依赖包统一存储在store
,不会出现像npm
或yarn
每个项目会下载独立的依赖,yarn
是从缓存下载文件,而pnpm
是从store
中链接依赖,pnpm
更节约空间,
当安装某个依赖时,新项目会使用硬链接到store
的这个依赖,多个项目不会出现多次安装依赖的情况,磁盘只有一次写入。
对于依赖的不同版本,在pnpm
中,则只会保存增量文件。比如:某个包有100个文件,如果更新版本只会修改其中的一个文件,不会因为新版本的存在而保存所有的依赖文件。
因为pnpm
的依赖包存储在store
同样也支持离线安装的功能。没有扁平化
node_modules
结构pnpm
不会扁平化依赖数,它的node_modules
布局使用符号链接来创建依赖关系的嵌套结构。
pnpm
所有包都有自己的依赖项组合在一起,内部每个包使用符号链接将它们组合在一起。一个
vue3
项目 的pnpm node_modules
结构vite
包的pnpm
结构参考链接
-
193个PMP 项目管理工具 免费.zip
2019-05-15 16:58:58好不容易“收集+工作用到”的项目管理工具,打个包,免费分享出来,希望能帮到做项目的同学 -
Npm(包管理工具)
2022-03-07 09:59:20Npm(包管理工具)一.NPM简介1.npm是什么2.npm的组成3.npm的用处4.package.json5.package-lock.json二.用户如何使用 NPM1.npm install2.npm ci3.npm audit三.作者如何使用 NPM四.具体应用1.生成 package.json2.安装...一.NPM简介
1.npm是什么
npm (node package manager)是 JavaScript 世界的包管理工具,并且是 node.js 平台的默认包管理工具。 通过 npm 可以 安装、共享、分发代码,管理项目依赖关系。
(npm(“Node 包管理器”)是 JavaScript 运行时 Node.js 的默认程序包管理器。)。也是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,里面包含超过600000个包(代码模块)的结构,来自各大洲的开源软件开发者使用npm互相分享和借鉴,能够使您轻松跟踪依赖项和版本。2.npm的组成
(由三个独立的部分“网站、注册表、命令行工具”组成)
网站 :是开发者查找包、设置参数以及管理 npm 使用体验的主要途径
注册表(registry):是一个巨大的数据库,保存了每个包(package)的信息。
命令行工具 (CLI):通过命令行或终端运行。开发者通过 CLI 与 npm 打交道
为了更直观地解释,我们可以将数据库 npmjs.com 视为一个物流集散中心,该中心从卖方(npm 包裹的作者)那里接收货物的包裹,并将这些货物分发给买方(npm 包裹的用户)。
为了促进此过程,npmjs.com 物流集散中心雇用了一群勤劳的袋熊(npm CLI),他们将被分配给每个 npmjs.com 用户作为私人助理。 因此,“dependencies(依赖项)(npm包裹)”会如下传递给 JavaScript 开发人员:
发布 JS 软件包的过程如下:
3.npm的用处
将软件包调整到应用程序中,或按原样合并它们
下载可立即使用的独立工具
无需使用npx下载即可运行包
与任何npm用户共享代码
将代码限制为特定开发人员
组建虚拟团队
管理多个版本的代码和代码依赖项
更新基础代码时,轻松更新应用程序
发现解决同一难题的多种方法4.package.json
每个 JavaScript 项目(无论是 Node.js 还是浏览器应用程序)都可以被当作 npm 软件包,并且通过 package.json 来描述项目和软件包信息。
我们可以将 package.json 视为快递盒子上的运输信息。
当运行 npm init 初始化 JavaScript/Node.js 项目时,将生成 package.json 文件,文件内的内容(基本元数据)由开发人员提供:
✸name: JavaScript 项目或库的名称。
✸version: 项目的版本。通常,在应用程序开发中,由于没有必要对开源库进行版本控制,因此经常忽略这一块。但是,仍可以用它来定义版本。
✸description: 项目的描述。
✸license: 项目的许可证。5.package-lock.json
该文件描述了 npm JavaScript 项目中使用的“依赖项(npm包裹)”的确切版本。(如果 package.json 是通用的描述性标签,则 package-lock.json 是成分表。)
就像我们通常不会读取食品包装袋上的成分表(除非你太无聊或需要知道)一样,package-lock.json 并不会被开发人员一行一行进行读取。
package-lock.json 通常是由 npm install 命令生成 的,也可以**由我们的 NPM CLI 工具读取**,以确保使用 npm ci 复制项目的构建环境。二.用户如何使用 NPM
npm 已帮助发布了 130 万个软件包,每周下载量超过 160 亿次! 这些数字对于任何软件工具来说都非常厉害。由此可以推断出,大多数 npm 用户都朝这个方向使用 npm。所以,了解如何使用这个强大的工具会很有帮助。
NPM中可以只运行一个命令来 安装多个模块、获取包的信息、安装特定版本的软件包、列出依赖项 等等有用的提示和技巧1.npm install
这是现在我们开发 JavaScript/Node.js 应用程序时最常用的命令。
默认情况下,npm install 将安装带有 ^ 版本号的软件包的最新版本。npm 项目上下文中的 npm install 将根据package.json规范将软件包下载到项目的 node_modules 文件夹中,从而升级软件包的版本(并重新生成package-lock.json )。 npm install 可以基于 ^ 和 〜 版本匹配。
如果要在全局上下文中安装程序包,可以在机器的任何地方使用它,则可以指定全局标志 -g (例如 live-server)。
使安装 JavaScript 软件包非常容易,以至于经常错误地使用此命令。
包太大、太深这样的问题可以通过 --production 标志来拯救!在上一节中,(分别用于生产和开发/测试环境的 dependencies 和 devDependencies ) 。 这个 --production 标志是如何在 node_modules 中进行区别的。
通过将此标志附加到 npm install 命令,我们将仅从 dependencies 安装软件包,从而将 node_modules 的大小大大减小到应用程序正常运行所必需的大小。——不应该将 devDependencies 引入生产环境!2.npm ci
如果 npm install --production 对于生产环境是最佳选项,那么是否必须有一个对本地环境,测试环境最合适的选项?
答案是 npm ci 。
就像如果 package_lock.json 尚不存在于项目中一样,无论何时调用 npm install 都会生成它, npm ci 会消耗该文件( package_lock.json ),来下载项目所依赖的每个软件包的确切版本。
这样,无论是用于本地开发的笔记本电脑还是 Github Actions 等 CI(持续集成)构建环境,我们都可以确保项目上下文在不同机器上保持完全相同。3.npm audit
随着越来越多的软件包发布,并且易于安装,因此 npm 软件包容易受到恶意作者的恶意攻击,例如这些。
意识到生态系统存在问题,npm.js 组织提出了 npm audit 的主意。 他们维护了一个安全漏洞列表,开发人员可以使用 npm audit 命令来审核项目中的依赖项。
npm audit 为开发人员提供了有关漏洞以及是否有要修复的版本的信息,例如:
如果补救措施在下一个不间断的版本升级中可用,则可以使用 npm audit fix 来自动升级受影响的依赖项的版本。三.作者如何使用 NPM
将软件包发送到 npmjs.com (地址可改) 非常容易,因为我们只需要运行 npm publish 。
棘手的部分(并非专门针对 npm 软件包作者)是确定软件包的版本。根据 semver.org 的经验法则:
1.当你进行不兼容的 API 更改时使用 MAJOR 版本
2.以向后兼容的方式添加功能时使用 MINOR 版本
3.进行向后兼容的 bug 修复时使用 PATCH 版本
发布软件包时,遵循上述规则尤为重要,可以确保你不会破坏任何人的代码,因为 npm 中匹配的默认版本是^(又称下一个次版本)。四.具体应用
1.生成 package.json
我们通常执行 npm init,然后开始添加 npm 请求的信息。
但是,如果我们不关心所有这些信息,并且希望保留默认值,那么对于 npm 请求的每一条数据,我们都按 enter 键。为了避免这种情况,你可以输入 npm init -y。这样就可以跳过问题询问了。
注:你也可以使用 npm init --yes 作用是一样的。2.安装模块
你可以使用更加简单的npm i 来代替 npm install;
3.一次安装多个模块
你不需要为每个模块键入一个 npm install 命令,例如:
bash 代码: npm i gulp-pugnpm i gulp-debugnpm i gulp-sass
你可以只运行一个命令,一次性安装所有这些模块:
bash 代码: npm i gulp-pug gulp-debug gulp-sass
还有更加简单的方法,如果所有名称都以相同前缀开头,你不需要键入整个名称:
bash 代码: npm i gulp{-debug,-sass,-pug}4.使用 install flags(安装参数) 的快捷方式
如果要安装软件包并将其另存为生产依赖项,则通常会这样做
bash 代码: npm i gulp --save-prod你可以使用 -P 快捷方式,像这样:
bash 代码: npm i gulp -P对于开发依赖项也是一样,不需要键入完整的 --save-dev 标志,你可以使用 -D 快捷方式,像这样:
bash 代码: npm i gulp -D
默认情况下,当你运行不带任何 flags(参数) 的 npm install 时,npm 会将包作为依赖项添加到 package.json 文件中。 如果要防止这种情况,请使用 --no-save flags(参数) 安装,如下所示:
bash 代码: npm i gulp --no-save5.获取包信息
下面的命令将显示 vue 包 的相关信息:
npm view vue 或 npm v vue
如果你只想获得最新版本的软件包,可以试试下面这个命令:bash 代码: > npm v vue version> 2.5.17
如果你想获得 npm 包完整的版本列表,请尝试复数形式
bash 代码: > npm v vue versions>
[ ‘0.0.0’, ‘0.6.0’, ‘0.7.0’, … ‘2.5.15’, ‘2.5.16’, ‘2.5.17-beta.0’, ‘2.5.17’ ]6.安装特定版本的软件包
如果要安装版本,而不是最新版本的软件包,可以键入:
bash 代码: npm i vue@2.5.15鉴于记忆名称比数字更容易(至少对我来说),你可以使用 dist-tag 列表中名称,运行 npm v 命令即可得到该列表 ,如下所示:
bash 代码: npm i vue@beta7.搜索 package(包)
有时你可能记不住你前一段时间或你朋友推荐的某个 package(包) 的确切名称。 在这种情况下,你可以使用 npm 搜索,直接在终端中执行搜索:
bash 代码: npm search gulp debug
或者
bash 代码: npm s gulp debug8.卸载 package(包)
如果你不想打开 package.json 文件并从那里手动删除依赖项,则可以使用以下命令将其删除:删除vue包
bash 代码: npm uninstall vue这将从 node_modules 文件夹和 package.json 文件中删除该包。 当然,你可以使用 rm , un 或 r 来实现相同的效果,例如:
bash 代码: npm rm vue如果由于某种原因你只想从 node_modules 文件夹中删除包文件,但仍然将其作为依赖项保存在 package.json 文件中,则可以使用 --no-save 参数:
bash 代码: npm rm vue --no-save五.npm 全局安装与本地安装、开发依赖和生产依赖
先抛几个常见疑惑:
1.什么是全局安装、什么是本地安装(或叫局部安装,下文统一叫本地安装) ?
2.为什么要全局安装?为什么要本地安装?全局安装和本地安装有什么区别?
3.什么叫开发依赖、生产依赖?什么又是开发环境、生产环境?全局安装与本地安装
一、全局安装:
npm install -g //(这里-g是-global的简写)
通过上面的命令行(带-g修饰符)安装某个包,就叫全局安装。通常全局包安装在node目录下的node_modules文件夹。可以通过执行下面几条命令查看node、npm的安装目录和全局包的安装目录。1.which node // 查看node的安装目录
2.which npm // 查看npm的安装目录
3.npm root -g // 查看全局包的安装目录
4.npm list -g --depth 0 //查看全局安装过的包二、本地安装:
npm install (后面可以加几种修饰符,主要有两种–save-dev和–save)
通过上面的命令行安装某个包,就叫本地安装。包安装在你当前项目文件夹下的node_modules文件夹中。三、全局安装的作用:
全局安装的包可提供直接执行的命令(例:gulp -h可以查看gulp定义了什么命令)。 比如gulp全局安装后,可以在命令行上直接执行gulp -v、gulp -h等 (原理:全局安装的gulp会将其package.json中的bin命令注入到了全局环境,使得你可以全局执行:gulp xxx命令,这另一个话题了,不深入) 。倘若只在本地安装了gulp,未在全局安装gulp,直接执行这些命令会报错。你想要执行相应的命令则可能需要例如:node ./node_modules/gulp/bin/gulp.js -v(查看版本) 这样用一大串命令来执行。因此全局安装就发挥到他的好处了呀,一个gulp -v就搞定
当然,不是每个包都必须要全局安装的,一般在项目中需要用到该包定义的命令才需要全局安装。比如gulp 执行gulp任务…等,所以是否需要全局安装取决于我们如何使用这个包。全局安装的就像全局变量有点粗糙,但在某些情况下也是必要的,全局包很重要,但如果不需要,最好避免使用。四、可以全局安装,那么直接全局安装到处使用就行了,干嘛还需要本地安装?
如果只是全局安装了而没本地安装,就得require(’’) 例:引入一个全局的包可能就是requirt(’/usr/local/…’)通过全局包的路径引入,这样显然十分的不灵活。如果安装了本地包,那么 就可以直接require(’’)引入使用。
一个包通常会在不同的项目上会重复用到,如果只全局安装,那么当某个项目需要该包更新版本时,更新后可能就会影响到其他同样引用该包的项目,
因此本地安装可以更灵活地在不同的项目使用不同版本的包,并避免全局包污染的问题。
一个经验法则:要用到该包的命令执行任务的就需要全局安装,要通过require引入使用的就需要本地安装( 但实际开发过程中,我们也不怎么需要考虑某个包是全局安装还是本地安装,因为这一点在该包的官网上一般会明确指出,以上是为了理解全局安装和本地安装)开发依赖和生产依赖
顺着上面讲到的本地安装,本地安装有两种主要的安装方式:
保存到开发依赖(devDependencies):
npm install < pageName> --save-dev
等同 npm install < pageName>
保存到生产依赖(dependencies):
npm install < pageName> --save"开发依赖"顾名思义在开发环境中用到的依赖,"生产依赖"在生产环境中用到的依赖。那么这里又延伸出个问题什么是开发环境、什么是生产环境?
一、开发环境和生产环境
【开发环境】:指的是你的项目尚且在编码阶段时的环境。你在代码可能还有各种console.log()、注释、格式化等。
【生产环境】:指的是你的项目已经完成编码,并发布上线可供用户浏览的阶段时的环境。代码可能经过了压缩、优化等处理。这些概念其实并没有一个很明确的定义,接下来我们举例个场景,将"开发环境"、“生产环境"和上面的"开发依赖”、"生产依赖"联系起来就会比较容易理解的了。假如我们在开发过程中使用jQuery。在以往,可能就是把jQuery这个插件下载的本地,再通< script>引入html中。但这有个不方便的地方,我们每次进行一个项目的时候就得手动复制这个jQuery文件到我们的项目中,如果想要换个版本又得官网上下载、随着项目越来越多。用到的插件、库也随之越繁杂…这样会造成自家用的插件管理繁琐的问题。因此就出现了npm(包管理工具) 你需要用到什么,直接通过一条命令行就可以将想要的插件下载下来,并直接引入到项目中,目前几乎所有的js插件都能在npm上直接下载。
二、生产依赖 npm -i xxx --save–dev
回到环境和依赖话题,我们下载的jQuery,在开发时参与源码编写,在发布上线的生产环境中也是需要它的。不仅在开发环境编写代码时要依赖它、线上环境也要依赖它,因此将它归类为"生产依赖",安装时执行npm install jquery --save,它就会被记录在package.json的dependencies。当进行代码打包时,会将这里的jQuery打包入我们的项目代码中。
三、开发依赖 npm -i xxx --save
接着,假如我们用gulp对html进行压缩,我们通常会用到一个插件gulp-htmlmin。我们只希望它把html压缩完就ok了,并不希望它融入我们的项目代码中,即只存在于开发环境,因此把他归类为"开发依赖"。安装时执行npm install gulp-htmlmin --save-dev它就会被记录在package.json的devependencies下,当进行代码打包时,不会将这里的gulp-htmlmin插件源码打包入我们的项目代码中
devDependencies只会在开发环境下使用,生产环境不会被打入包内;而dependencies不仅在开发环境中要使用,生产环境也需要使用到。根据以上规则,我们就很容易区分哪些插件是用–save-dev模式安装,哪些用–save模式安装。 -
Python的包管理工具
2022-03-20 09:30:41Python的包管理工具 pip工具 ● 选择题 以下pip命令中哪一项没有对numpy库进行操作? A pip --version B pip uninstall numpy C pip install numpy D pip install --upgrade numpy ● 问题解析 1.pip是Python...【小白从小学Python、C、Java】
【Python全国计算机等级考试】
【Python数据分析考试必会题】
● 标题与摘要
Python的包管理工具
pip工具● 选择题
以下pip命令中哪一项没有对numpy库进行操作?
A pip --version
B pip uninstall numpy
C pip install numpy
D pip install --upgrade numpy● 问题解析
1.pip是Python的包管理工具,具有查找、下载、安装和卸载Python第三方库的功能。目前在Python官网下载最新版本的安装包都自带了pip工具。
2.pip常用命令:
2.1判断是否安装pip工具,获知pip的版本和路径信息(运行结果详见图1)
>>>pip --version
2.2安装第三方库
>>>pip install Package_name
比如安装pandas库就可以用(运行结果详见图1):
>>>pip install pandas
如果想指定库的版本,可以用(运行结果详见图3):
>>>pip install pandas==1.3.4
2.3卸载第三方库(运行结果详见图2)
>>>pip uninstall Package_name
比如卸载pandas库就可以用:
pip uninstall pandas
2.4升级第三方库(运行结果详见图3)
>>>pip install --upgrade Package_name
比如升级pandas库就可以用:
>>>pip install --upgrade pandas
2.5显示第三方库的信息
列出已安装的第三方库及其版本,可以用:
>>>pip list
查看指定的第三方库及其版本,可以用:
>>>pip show Package_name
3.题目中A选项的命令可以用来判断是否安装了pip工具,不是对numpy库进行操作。BCD选项都是对numpy库进行操作,分别为B-卸载numpy库、C-安装numpy库和D-更新numpy库。● 附图
图1:查看pip工具的版本信息并使用pip命令安装第三方库图2:使用pip工具卸载第三方库
图3:使用pip工具升级第三方
● 附图代码
# 在anaconda prompt中可以直接使用pip命令,在jupyter中需要在每一条命令前加!# 查看pip版本及路径
!pip --version# 查看是否安装numpy
# 如果没有安装numpy,会显示not Found错误,否则显示numpy的相关信息
!pip show numpy# 安装numpy库
!pip install numpy# 验证numpy库已装好
!pip show numpy# 使用pip卸载已有的第三方库numpy
# 在prompt里面卸载会提示是否确定卸载,此时输入y即可表示确定
# 在jupyter里则需要加上-y表示确定
# 卸载numpy库-1.22.3
!pip uninstall numpy -y# 验证numpy库已被卸载
!pip show numpy# 使用pip工具更新第三方库numpy
# 安装一个版本较低的numpy库
!pip install numpy==1.22.0# 查看当前numpy库的版本信息
!pip show numpy# 更新numpy库的版本
!pip install --upgrade numpy# 由此可知,将1.22.0版本更新为1.22.3版本
● 正确答案
A欢迎大家转发,一起传播知识和正能量,帮助到更多人。期待大家提出宝贵改进建议,互相交流,收获更大。辛苦大家转发时注明出处(也是咱们公益编程交流群的入口网址),刘经纬老师共享知识相关文件下载地址为:http://liujingwei.cn
-
包管理工具-npm-npx-yarn-cnpm
2022-01-03 16:23:40包管理工具解析 代码共享方案 我们已经学习了在JavaScript中可以通过模块化的方式将代码划分成一个个小的结构: 在以后的开发中我们就可以通过模块化的方式来封装自己的代码,并且封装成一个工具; 这个工具我们... -
什么是包管理器,C++ 有没有像 pip、npm、gem 一样的包管理工具?
2021-12-04 23:23:18RPM包管理器dpkg包管理器二、C++ 有没有像 pip、npm、gem 一样的包管理工具?三、C++包管理器有哪些1. [Conan](https://github.com/conan-io/conan)2. [Buckaroo](https://github.com/LoopPerfect/buckaroo)3. ... -
C/C++包管理工具Conan简介
2021-07-03 19:07:08Conan是一个开源的、跨平台的、去中心化的C和C++包管理器,它的源码在https://github.com/conan-io/conan ,License为MIT,最新发布版本为1.38.0,由Python实现。版本更新较频繁,但保持向前兼容。 Conan特点: ... -
使用pip包管理工具安装python扩展包
2022-02-09 15:56:32pip 是Python核心软件提供的包管理工具,利用pip可以在线安装扩展包(直接下载并安装),包括扩展包所有的依赖(根据扩展包的依赖文件)。 ①通过 win+r 打开运行窗口输入cmd,回车,进入Windows的cmd命令窗口 ②... -
C++包管理工具vcpkg
2021-12-05 17:59:333. 使用 3.1. 疑难-无法解析的外部符号 3.2. 疑难-“RuntimeLibrary”不匹配 3.2.1. 问题描述: 3.2.2. 解决方法1 3.2.3. 解决方案2 3.3. 疑难-安装失败 3.4. 查看支持的平台 3.5. 安装过程解析 4. 其他操作 ... -
网页抓包工具 科鼎网页抓包工具 v1.3
2020-11-10 15:20:55科鼎网页抓包工具IE网页抓包工具是一款强大的网页数据分析工具。集成在Internet Explorer工具栏,包括网页摘要、Cookies管理、缓存管理、消息头发送/接受字符查询、POST 数据和目录管理 -
javascript包管理工具发展历史
2022-03-02 23:45:57npm和yarn都是javascript包管理工具;因为npm在使用过程中暴露出一些问题;但恰恰yarn下载依赖包和包版本管理等方面比较有优势;所以其中yarn快速发展;但是npm后续也在不断完善,所以二者现在是良性竞争的阶段; ... -
conan-c++包管理工具安装及使用指南
2021-04-04 14:42:05c、c++包管理工具 python写的 开源 类似java的maven,python的pip 1.1 简单介绍 Conan是C和C ++语言的依赖项和程序包管理器。它是免费和开源的,并且可以在所有平台上使用:Windows,Linux,OSX,FreeBSD,... -
19Go语言——包和包管理工具
2019-06-25 18:03:29包和包管理工具 ...init4、文档4.1 生成文档规范4.2 给文档添加示例函数5、包管理工具5.1 依赖管理快速了解5.2 Vendor 机制引入5.2.1 官方dep... -
Go:包管理工具GOPATH、vendor、dep 、go module
2020-02-13 17:05:56Go包管理工具:前言 Golang一直存在一个被人诟病的问题是缺少一个官方的包依赖管理工具。从我个人的角度上来看存在两个问题: GOPATH特性对于多工程的情况下,支持不算友好。 GOPATH无法对依赖包进行有效的版本... -
PMP项目管理实战工具包
2014-12-19 10:45:25光环PMP项目管理实战工具包 项目管理实用表格与应用 项目管理实用模板 项目经理必须了解的几个问题 -
Mac系统包管理工具brew(Homebrew)
2020-04-12 09:30:21Homebrew是Mac系统中的包管理工具,可方便的对一些应用包进行安装、卸载等管理操作。类似Linux中的apt-get、yum以及nodejs的npm工具等。 官方地址:https://brew.sh/ 2、安装 在终端中执行以下代码进行安装,... -
python包管理工具之PIP
2014-02-20 13:29:58下载get-pip.py后,在已安装python的机器上执行python get-pip.py, 即可安装pip -
连接管理器工具包 用于 x86 的 Windows Server 2003 Service Pack 2 管理工具包
2010-01-12 11:18:52管理工具包可以让管理员将 Windows Server 2003 SP2 管理工具安装到运行 Windows XP Professional 或 Windows Server 2003 家族操作系统的计算机上,以便执行远程服务器管理功能。 -
Java包管理工具-maven
2018-07-11 15:31:41没有使用maven的时候,我们在项目开始...maven是基于项目对象模型(POM),可以用一小段信息来描述和管理项目构建、报告和文档的软件项目管理工具。 maven项目一般的结构如下所示 src -main -java -package ... -
Linux篇(三):Linux的包管理工具
2018-12-22 21:12:23什么是包管理工具 软件包管理工具的作用是提供在操作系统中安装,升级,卸载需要的软件的方法,并提供对系统中所有软件状态信息的查询。在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和DPT为最常见的两类软件包... -
Python 安装包管理工具 pip
2021-10-26 08:09:00pip 是一个现代的,通用的Python包管理工具。提供了对Python包的查找,下载,安装,卸载的功能,便于对Python的资源包进行管理。在安装Python时会自动下载并安装。在Windows中查看pip的版本pip -V输出:pip 21.3 ... -
前端各种包管理工具简述
2020-03-01 14:05:31npm&cnpm&yarn&tyarn npm是名声最广的前端包管理器,为Node.js自带 cnpm是npm的阿里版,用的...yarn的出现是想取代npm包管理工具,特点是快速安全可靠 tyarn这个是yarn的阿里版,用的是阿里的源 ... -
Linux系统管理工具包系列汇总 Linux系统管理员必看
2013-08-06 11:38:31Linux系统管理工具包: 监视用户的使用情况 Linux系统管理员工具包: 监视磁盘空间和使用情况 Linux系统管理员工具包: 交换空间管理和技巧 Linux系统管理工具包: 使用SSH进行分布式管理 Linux系统管理工具包: 测试... -
系统管理工具包使用 SSH进行分布式管理
2012-05-05 21:19:31系统管理工具包使用 SSH进行分布式管理 -
Golang包管理工具(一)go mod
2019-04-10 18:22:31在项目上,经常需要使用外部的包来实现相应的功能,当多个人同时进行开发时,就需要一个包管理器,每个人通过包管理器将自己代码所调用包,保存在同一个目录地下,然后提交到git上面,当以通进行开发的人拉取代码后... -
Java类包管理工具——jar
2017-12-20 08:06:14基础概念 JAR文件格式以流行的ZIP文件格式为基础,用于将多个文件聚集为一个文件。区别于ZIP文件的地方,JAR文件不仅用于压缩和发布,而且还... 为创建、管理JAR文件,可以使用作为JDK一部分的jar命令行工具(存在