首页 > 其他分享 >企业级包管理器之 npm 回顾 (2)

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

时间:2024-12-08 20:01:18浏览次数:5  
标签:npm Node 管理器 package 作用域 企业级 模块

在前端开发的浩瀚海洋中,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 文件称之为一个模块。这个模块通常会包含一个或多个变量、函数、类、对象的导出。模块是一个独立的单元,可以被其他模块导入并使用。

例如:

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。私有包通常都是作用域包。

标签:npm,Node,管理器,package,作用域,企业级,模块
From: https://blog.csdn.net/weixin_53961451/article/details/144330106

相关文章

  • NPM 使用介绍
    NPM(NodePackageManager)是一个JavaScript包管理工具,也是Node.js的默认包管理器。NPM允许开发者轻松地下载、安装、共享、管理项目的依赖库和工具。NPM是Node.js自带的包管理工具,因此,通常你只需安装Node.js,NPM就会自动安装在系统中。主要功能:包管理:NPM可以帮......
  • Win7 系统事件管理器无法审计登录失败事件4625
    4625(F):Anaccountfailedtologon这个事件是登录失败、密码错误的EventTrace事件,但是在win7上却看不到,win10是正常的。原因:系统组策略没有开启登录失败审计。 解决方法:1.首先我们需要打开组策略管理器:gpedit.msc 2.依次打开 3.启用审核登录事件后保存。......
  • VUE: npm run dev报错Error: error:0308010C:digital envelope routines::unsupported
    emittingCompressionPluginERROR Error:error:0308010C:digitalenveloperoutines::unsupported 说明:该错误通常是Node.js的加密模块和OpenSSL版本不兼容造成的Node.js版本17及以上中,默认禁用了某些加密算法,这可能导致与一些期望使用这些算法的模块或应用程序的兼......
  • Npm 命令
    1.清除npm缓存npmcacheclean-force2.重新安装依赖npmixxx-g3.更换镜像npmconfgsetregistryhttps://mirrors.huaweicloud.com/repository/npm/--华为镜像npmconfigsetregistryhttps://registry.npmmirror.com/--淘宝镜像npmconfigsetregistryh......
  • ubuntu(22.04) 安装typescript基础运行环境 (nodejs, npm)
    https://nodejs.org/zh-cn/download/package-manager这里是nodejs的官网教程,可以直接看官网安装nodejs和npm不过是外国的服务器,可能下载会比较慢,这里我直接给出node.js22.12.0的安装脚本,(对应的官网的选项为这3个22.12.0Linuxnvm)点击就可以下载了nodejs-22.12.0-install.......
  • npm 创始人再创业,全新前端工具来了!
    最近,npm创始人IsaacZ.Schlueter的创业团队(vlttechnologyInc.)宣布推出两个新产品:新JavaScript包管理器vlt和下一代软件包注册表vsr。下面就来了解一下创业团队以及他们的新产品!创业团队不简单今年三月,vlttechnologyInc.团队的首席执行官DarcyClarke宣布,......
  • 在 Windows 10 11中,索引文件功能(Windows Search Indexing )是通过 Windows 搜索服务提
    在Windows10和Windows11中,索引文件功能的英文全称是"WindowsSearchIndexing",简称为"WindowsSearch"或"SearchIndexing"。英文全称: WindowsSearchIndexing简称: WindowsSearch 或 SearchIndexing该功能用于加速文件和数据的搜索,通过创建一个索引数据库......
  • 【ubuntu】使用二进制安装包安装node和npm并配置
    一、官网https://nodejs.org/zh-cn 二、安装方法1、下载安装包 2、解压安装包到指定目录tarxfnode-v14.21.0-linux-x64.tar.xz-C~/tools/&&cd~/tools 3、配置环境变量#nodeexportNODE_HOME=$HOME/tools/node-v14.21.0-linux-x64exportPATH=$NODE_HO......
  • 【前端知识】npm命令行详细说明
    npm命令行详细说明概述一、定义与功能二、基本命令三、配置文件与注册表四、应用场景五、高级特性环境设置1.设置镜像源2.配置全局依赖存储路径3.配置缓存路径4.查看所有配置5.清除缓存6.升级npm版本npm组件打包1.初始化项目2.安装依赖3.构建脚本4.打包项目5......
  • KIOXIA CD8 CM7系列企业级SSD区别在哪里?KCD81RUG1T92 KCMY1RUG1T92 PM9A3
    我们来看一下,KIOXIACD8系列、CM7系列和三星PM9A3系列,U.2接口的参数介绍产品型号KCD81RUG1T92KCMY1RUG1T92MZQL21T9HCJR-00A07品牌铠侠铠侠三星系列CD8-RCM7-RPM9A3容量1,920GB1,920GB1,920GB尺寸2.5-inch,15mmthickness2.5-inch2.5-inch,15mmthickness接口U.2U.2/U.3*......