企业级包管理器之 npm 回顾 (2)

在前端开发的浩瀚海洋中,npm(Node Package Manager)犹如一座坚实的灯塔,为开发者们指引着前进的方向。现在,让我们一同回顾 npm 的基本概念以及包的相关重要概念,为深入理解企业级包管理器奠定基础。

一、npm 基本概念

(一)名称解析

npm,即 Node 包管理器,其英文全称为"node package manager"。它在前端开发中扮演着至关重要的角色,是 Node.js 生态系统中不可或缺的一部分。

(二)现代前端开发对包管理器的需求

  1. 传统方式的弊端:在进行项目开发时,若采用传统方式引入包,每次都需从官网下载代码、解压后放入项目中,这种做法极为原始且繁琐。
  2. 依赖管理的难题:现代开发中,引用的包往往存在复杂的依赖关系,如模块 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 实际上由三个主要部分组成:

  1. 网站 :在npm 的官网里开发者可以注册账号、搜索包并查看其说明,尤其对于那些没有独立官网的插件,这个网站至关重要。
  2. CLI(命令行接口):这是开发者与 npm 打交道最多的方式。通过在控制台输入命令(如 npm i、npm init),可以进行各种交互操作。
  3. registry(仓库):这是 npm 对应的大型仓库,所有上传的包都会存储在这里。

二、关于包的概念

(一)包的定义

究竟什么是包(package)呢?从软件工程的角度来看,包是一种组织代码结构的方式。通常,一个包提供一个功能,用于解决某一个特定问题。一般来说,一个包会将相关的所有目录和文件放置在一个独立的文件夹中,并通过一个特殊的文件(package.json)来描述这个包。此外,若要向 npm 发布包,必须要有 package.json 这个文件。

(二)包与模块的区别

module 翻译成中文叫做模块。一般来讲,我们会将一个单独的 JS 文件称之为一个模块。这个模块通常会包含一个或多个变量、函数、类、对象的导出。模块是一个独立的单元,可以被其他模块导入并使用。

例如:

bash 复制代码
my-package/
|-- lib/
|   |-- string-utils.js
|-- package.json
|-- README.md

在上面的示例中,my-package 就是一个包,string-utils.js 就是一个模块。

(三)包的分类

  1. 作用域包(scoped package) :必须以 @ 符号开头,后面跟上作用域名称,再加上一个斜杠,最后是包名,即 @scope-name/package-name。例如 @vue/cli、@vue/runtime-core、@vue/shared。在安装和引入作用域包时,都需要将作用域名写全。
    • 安装时:npm i @vue/cli -g
    • 引入时:const mypackage = require("@myorg/mypackage");
    • 作用:可以避免重名的情况,作用域名可以充当一个命名空间,同时也能表达某一系列包属于某一个组织。
  2. 非作用域包(unscoped package):非作用域包由于没有特定的作用域,因此在发布时一定要保证包名是全局唯一的。常见的非作用域包有 lodash、axios 等。
  3. 公共包(public package):公共包是在 npm 注册表中公开发布的包,任何人都可以搜索、查看和安装。公共包在发布时默认为开源许可证(如 MIT、BSD、Apache 等),这意味着其他人可以自由地查看源代码、修改代码并在自己的项目中使用。当我们希望与广泛的开发者社区共享代码并允许他们参与项目时,可以选择发布为公共包。
  4. 私有包(private package):私有包是在 npm 注册表中非公开发布的包,只能被特定的用户或团队成员搜索、查看和安装。私有包通常用于存储企业内部的代码和资源,或者在开发过程中尚未准备好向公众发布的项目。要发布和使用私有包,需要拥有一个 npm 付费账户,并将包的 private 属性设置为 true。私有包通常都是作用域包。
相关推荐
东方小月6 分钟前
从零开发一个 Coding Agent(八):如何使用 Agent 类管理对话状态
前端·人工智能
光影少年28 分钟前
RN 网络请求:Fetch / Axios 封装、超时、拦截器
前端·react native·react.js
学习星球40 分钟前
Vue 3 实战:拆解 RealWorld 项目
前端·vue.js
铁皮饭盒1 小时前
网页端, 6.5MB人脸识别模型, 谷歌框架, 又快又准
前端·javascript·后端
xiaohaiAIgeo1 小时前
【2026年】ASHRAE 110与EN 14175通风柜测试标准对比:进口与国产品牌性能差距
java·前端·数据库·科普知识
用户2930750976691 小时前
TypeScript 必考题:Type 与 Interface 全面对比
前端
hunterandroid2 小时前
[鸿蒙从零到一] HarmonyOS 媒体能力实战:图片、音频与视频处理
前端
打呵欠的猫2 小时前
我让 AI 封装了一个 ImageUpload 组件,它设计的 5 层校验链路比我想的周全
前端·ai编程
AlexMaybeBot2 小时前
躺在沙发上开发 Openclaw 的移动端APP
前端·flutter
用户2181697049302 小时前
Flutter(十三)Text Image TextField
前端