企业级包管理器之 npm 回顾 (2)
在前端开发的浩瀚海洋中,npm(Node Package Manager)犹如一座坚实的灯塔,为开发者们指引着前进的方向。现在,让我们一同回顾 npm 的基本概念以及包的相关重要概念,为深入理解企业级包管理器奠定基础。
一、npm 基本概念
(一)名称解析
npm,即 Node 包管理器,其英文全称为“node package manager”。它在前端开发中扮演着至关重要的角色,是 Node.js 生态系统中不可或缺的一部分。
(二)现代前端开发对包管理器的需求
- 传统方式的弊端:在进行项目开发时,若采用传统方式引入包,每次都需从官网下载代码、解压后放入项目中,这种做法极为原始且繁琐。
- 依赖管理的难题:现代开发中,引用的包往往存在复杂的依赖关系,如模块 A 依赖于模块 B,模块 B 又依赖于模块 C。让开发者手动管理这种依赖关系,不仅容易出错,还十分麻烦。
(三)包管理器的诞生及作用
正因如此,包管理器应运而生。它专门用于管理软件包、库以及相互之间的依赖关系,极大地提高了开发效率,降低了出错风险。
(四)常见语言的包管理器
一般来说,一门成熟的语言都会有配套的包管理器。例如:
- Node.js 对应的是 npm(Node Package Manager)。
- Python 有 pip(Pip Installs Packages)。
- Ruby 有 rubygems(Ruby Gems)。
- Java 有 Maven(Maven Repository)。
- PHP 有 Composer(Dependency Manager for PHP)。
- Rust 有 Cargo(Rust’s Package Manager)。
- Go 有 Go mod(Go’s Package Manager)。
(五)npm 的组成部分
npm 实际上由三个主要部分组成:
- 网站:在npm 的官网里开发者可以注册账号、搜索包并查看其说明,尤其对于那些没有独立官网的插件,这个网站至关重要。
- CLI(命令行接口):这是开发者与 npm 打交道最多的方式。通过在控制台输入命令(如 npm i、npm init),可以进行各种交互操作。
- registry(仓库):这是 npm 对应的大型仓库,所有上传的包都会存储在这里。
二、关于包的概念
(一)包的定义
究竟什么是包(package)呢?从软件工程的角度来看,包是一种组织代码结构的方式。通常,一个包提供一个功能,用于解决某一个特定问题。一般来说,一个包会将相关的所有目录和文件放置在一个独立的文件夹中,并通过一个特殊的文件(package.json)来描述这个包。此外,若要向 npm 发布包,必须要有 package.json 这个文件。
(二)包与模块的区别
module 翻译成中文叫做模块。一般来讲,我们会将一个单独的 JS 文件称之为一个模块。这个模块通常会包含一个或多个变量、函数、类、对象的导出。模块是一个独立的单元,可以被其他模块导入并使用。
例如:
my-package/
|-- lib/
| |-- string-utils.js
|-- package.json
|-- README.md
在上面的示例中,my-package 就是一个包,string-utils.js 就是一个模块。
(三)包的分类
- 作用域包(scoped package):必须以 @ 符号开头,后面跟上作用域名称,再加上一个斜杠,最后是包名,即 @scope-name/package-name。例如 @vue/cli、@vue/runtime-core、@vue/shared。在安装和引入作用域包时,都需要将作用域名写全。
- 安装时:
npm i @vue/cli -g
。 - 引入时:
const mypackage = require("@myorg/mypackage");
。 - 作用:可以避免重名的情况,作用域名可以充当一个命名空间,同时也能表达某一系列包属于某一个组织。
- 安装时:
- 非作用域包(unscoped package):非作用域包由于没有特定的作用域,因此在发布时一定要保证包名是全局唯一的。常见的非作用域包有 lodash、axios 等。
- 公共包(public package):公共包是在 npm 注册表中公开发布的包,任何人都可以搜索、查看和安装。公共包在发布时默认为开源许可证(如 MIT、BSD、Apache 等),这意味着其他人可以自由地查看源代码、修改代码并在自己的项目中使用。当我们希望与广泛的开发者社区共享代码并允许他们参与项目时,可以选择发布为公共包。
- 私有包(private package):私有包是在 npm 注册表中非公开发布的包,只能被特定的用户或团队成员搜索、查看和安装。私有包通常用于存储企业内部的代码和资源,或者在开发过程中尚未准备好向公众发布的项目。要发布和使用私有包,需要拥有一个 npm 付费账户,并将包的 private 属性设置为 true。私有包通常都是作用域包。
原文地址:https://blog.csdn.net/weixin_53961451/article/details/144330106
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!