【每天学习一点点 day05】工程化 重新认识npm 02_包(package.json)的概念、模块(node_modules)、范围(scoped

news2024/10/4 14:56:15

1. 包package

About packages and modules | npm Docs (npmjs.com)

1.1. package package.json包的描述性文件

  • A package is a file or directory that is described by a package.json file.

包是由 package.json 文件描述的文件或目录。

  • A package must contain a package.json file in order to be published to the npm registry. 

包必须包含 package.json 文件才能发布到 npm 注册表。

被npm管理的包必须含有package.json这个文件,否则npm无法识别这是个npm包

例如:

①在新项目中创建一个test空的文件夹

②在test空的文件夹中,执行npm install axios,看看能不能直接安装在test文件夹中

③结果发现,npm install没有在test中安装axios,而是沿着路径向上找到第一个含有package.json的文件夹,在当前目录中执行npm install axios

1.2. pacakge scoped包的作用范围(见下面3,4)

Packages can be unscoped or scoped to a user or organization, and scoped packages can be private or public. For more information, see "Creating a package.json file".

包是由 package.json 文件描述的文件或目录。包必须包含 package.json 文件才能发布到 npm 注册表。有关创建 package.json 文件的更多信息,请参阅 "创建 package.json 文件"。

Packages can be unscoped or scoped to a user or organization, and scoped packages can be private or public. For more information, see

  • "About scopes
  • "About private packages
  • "Package scope, access level, and visibility

1.3. package format包的一般格式

2. 模块module

About packages and modules | npm Docs (npmjs.com)

2.1. node module和node_modules

node_modules是存放node module的文件夹

模块是 node_modules 目录中可以被 Node.js require() 函数加载的任何文件或目录。

要由 Node.js require() 函数加载,模块必须是以下之一:

  • 包含 package.json 文件的文件夹,其中包含 "main" 字段。
  • 一个 JavaScript 文件。

注意:由于模块不需要有 package.json 文件,因此并非所有模块都是包。只有具有 package.json 文件的模块也是包。

在 Node 程序的上下文中,module 也是从文件加载的东西。例如,在以下程序中:

var req = require('request')

我们可以说"The variable req refers to the request module"。

node_modules中的module模块不是必须含有package.json这个文件

不过由于node_modules中安装的基本都是从npm registry下载下来的包,而npm registry管理的包都有package.json,所以一般node_modules中下载的模块都是一个一个的package包。

3. 包的范围 scoped

About scopes | npm Docs (npmjs.com)

npm package scope, access level, and visibility | npm Docs (npmjs.com)

3.1. 包的范围是什么

当您注册 npm 用户账户或创建组织时,您将获得与您的用户或组织名称匹配的范围。您可以将此范围用作相关包的命名空间。

如果你也想创建一个包,包名叫lodash,npm为了避免冲突,你可以使用@scoped-name/lodash来命令你的lodash包

例如:我可以发布一个名称叫做 @yongzl/lodash 的npm包

3.2. 范围的作用是什么

范围允许您创建与其他用户或组织创建的包同名的包,而不会发生冲突。

当在 package.json 文件中列为依赖项时,范围包的前面是它们的作用域名称。范围名称是 @ 和斜杠之间的所有内容

@vue/cli 范围为:vue

@npm/packageA 范围为:npm

3.3. 范围和可见性

  • 无范围的包总是公开的。
    • 例如:lodash 就是一个无范围的公开包
  • 私有包 始终是有范围的。(私有包不会在npm registry公开,无法搜索到一个私有包)
  • 范围包默认是私有的;您必须在发布时传递命令行标志才能将它们公开。
    • 例如:@vue/shared 就是一个①有范围的②组织的(vue)③公开包
    • 例如:@antfu/utils  就是一个①有范围的②个人的(antfu)③公开包

4. 公共包与私有包 public和private

About public packages | npm Docs (npmjs.com)

About private packages | npm Docs (npmjs.com)

4.1. 公共包

作为 npm 用户或组织成员,您可以创建和发布任何人都可以下载并在自己的项目中使用的公共包。

  • 无范围的 公共包存在于全局公共注册表命名空间中,可以在 package.json 文件中单独使用包名进行引用:package-name。
  • 有范围的 公共包属于用户或组织,当作为依赖项包含在 package.json 文件中时,必须以用户或组织名称开头:
    • @username/package-name
    • @org-name/package-name

4.2. 私有包

要使用私有包,您必须

  • 使用 npm 2.7.0 或更高版本。要升级,请在命令行上运行

 npm install npm@latest -g

  • 有一个付费用户或组织账户

使用 npm 私有包,您可以使用 npm 注册表来托管仅对您和选定的协作者可见的代码,从而允许您在项目中管理和使用私有代码以及公共代码。

私有包总是有一个范围,而范围包默认是私有的。

  • 用户范围的私有包只能由您和您授予读取或读/写访问权限的协作者访问。有关详细信息,请参阅 "将协作者添加到用户账户拥有的私有包中
  • 组织范围的私有包只能由已被授予读取或读/写访问权限的团队访问。有关详细信息,请参阅 "管理团队对组织包的访问

4.3. npm包的范围、访问级别和可见性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1457025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

追赶OpenAI的Sora:Meta开源V-JEPA,让AI学会认识世界!

就在Sora疯狂刷屏那天,还有两款重磅产品发布:一个是谷歌的Gemini 1.5,首个支持100万tokens上下文的大模型;另外一个便是全球科技、社交巨头Meta的V-JEPA。 有趣的是,在功能方面V-JEPA与Sora有很多相似之处&#xff0c…

备战蓝桥杯 Day5

1191:流感传染 【题目描述】 有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人得了流感,以后每天,得…

用户空间与内核通信(一)

在Linux中,内核空间与用户空间是操作系统中的两个主要部分,它们有着明显的区别和不同的功能。 内核空间: 内核空间是操作系统内核运行的区域,它包括了操作系统内核代码、数据结构和设备驱动程序等。内核空间位于虚拟地址空间的最…

CleanMyMac X2024破解电脑版安装包下载

CleanMyMac X 4.14.6 是 CleanMyMac X 的一个具体版本号。这个版本可能包含了一些新的功能、改进和修复,以提高软件的性能和稳定性。以下是一些关于 CleanMyMac X 4.14.6 的特点和更新内容: 恶意软件保护:CleanMyMac X 4.14.6 继续加强其恶意…

SpringBoot源码解读与原理分析(五)SpringBoot的装配机制

文章目录 2.5 Spring Boot的装配机制2.5.1 ComponentScan2.5.1.1 ComponentScan的基本使用方法2.5.1.2 TypeExcludeFilter(类型排除过滤器)2.5.1.3 AutoConfigurationExcludeFilter(自动配置类排除过滤器) 2.5.2 SpringBootConfiguration2.5.3 EnableAutoConfiguration2.5.3.1 …

Shiro-05-5 分钟入门 shiro 安全框架实战笔记

序言 大家好,我是老马。 前面我们学习了 web 安全之 Spring Security 入门教程 这次我们来一起学习下另一款 java 安全框架 shiro。 什么是Apache Shiro? Apache Shiro是一个功能强大且易于使用的Java安全框架,它为开发人员提供了一种直…

【深度学习笔记】深度学习训练技巧——处理过拟合

处理过拟合 过拟合 定义:对训练集拟合得很好,但在验证集表现较差 神经网络 通常含有大量参数 (数百万甚至数十亿), 容易过拟合 处理策略:参数正则化、早停、随机失活、数据增强 早停 当发现训练损失逐渐下降,但验证集损失逐渐…

【项目管理】CMMI-项目监督和控制

项目监督和控制(Monitoring and Control, MC)的目的是通过周期性地跟踪项目计划的各种性能参数如工作产品的规模、工作量、成本、进度、风险等,不断地了解项目的进展情况,以便当项目实际进展状况显著偏离项目计划时能够及时采取纠…

Apache Flink连载(二十八):Flink细粒度资源管理(1)-适用场景和原理

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录

Hack The Box-Office

端口扫描&信息收集 使用nmap对靶机进行扫描 nmap -sC -sV 10.10.11.3开放了80端口,并且注意到该ip对应的域名为office.htb,将其加入到hosts文件中访问之 注意到扫描出来的还有robots文件,经过尝试后只有administrator界面是可以访问的 …

程序员的自我修养笔记

导读 本书将详细描述现在流行的Windows和Linux操作系统下各自的可执行文件、 目标文件格式; 普通C/C程序代码如何被编译成目标文件及程序在目标文件中如何存储; 目标文件如何被链接器链接到一起, 并且形成可执行文件; 目标文件在…

大白话说说redux

redux的3个重要概念 store 就是用来存放应用的各种状态的action 就是用来描述应用发生了什么动作的,注意理解他是对动作的描述reducer 就是用来处理应用的动作,并且决定怎么去更新应用存放在store里面的状态。 redux的3个原则 应用的所有状态存储为re…

消息中间件之RocketMQ源码分析(十)

Namesrv启动流程 第一步:脚本和启动参数配置。 启动命令 nohup ./bin/mqnamesrv -c ./conf/namesrv.conf > dev/null 2>&1 & 通过脚本配置启动基本参数,比如配置文件路径、JVM参数,调用NamesrvStartup.main()方法,解析命令行的…

Vue24 收集表单数据 实例

实例 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>收集表单数据</title><script type"text/javascript" src"../js/vue.js"></script></head><body><!-- 收集…

Spring Security基础学习

一、SpringSecurity框架简介 二、SpringSecurity入门案例 三、SpringSecurity Web权限方案 四、SpringSecurity微服务权限方案 五、SpringSecurity原理总结

Eclipse - Expressions Add Watch Expression

Eclipse - Expressions & Add Watch Expression References Window -> Show View -> Other… Show View -> Debug -> Expressions -> Open Debug 模式下出现 Expressions 窗口 Debug 模式下&#xff0c;如果需要查看指定变量或者返回函数的值&#xff0c;直…

千分位分隔?一个vue指令搞定

说在前面 &#x1f388;对数字进行千分位分隔后展示应该是大部分同学都做过的功能了吧&#xff0c;常规的做法通常是编写一个工具函数来对数据进行转换&#xff0c;那么我们可不可以通过vue指令来实现这一功能呢&#xff1f; 效果展示 实现原理 非输入框 非输入框我们只需要对…

力扣题目训练(16)

2024年2月9日力扣题目训练 2024年2月9日力扣题目训练530. 二叉搜索树的最小绝对差541. 反转字符串 II543. 二叉树的直径238. 除自身以外数组的乘积240. 搜索二维矩阵 II124. 二叉树中的最大路径和 2024年2月9日力扣题目训练 2024年2月9日第十六天编程训练&#xff0c;今天主要…

【白嫖8k买的机构vip教程】python(2):python_re模块

python之re模块 一、正则表达式   re模块是python独有的匹配字符串的模块&#xff0c;该模块中提供的很多功能是基于正则表达式实现的&#xff0c;而正则表达式是对字符串进行模糊匹配&#xff0c;提取自己需要的字符串部分&#xff0c;他对所有的语言都通用。注意&#xf…

程序员必看的几部电影

目录 《我是谁&#xff1a;没有绝对安全的系统》 《模仿游戏》 《硅谷传奇》 《代码 The Code》 作为程序员&#xff0c;除了在工作中不断学习和提升技术外&#xff0c;适当地放松也是必不可少的 看电影可以是一个很好的放松方式&#xff0c;而对于程序员来说&#xff0c;…