向npm注册中心发布包(上)

目录

1、创建package.json文件

1.1 fields 字段

1.2 Author 字段

1.3 创建 package.json 文件

 1.4 自定义 package.json 的问题

1.5 从当前目录提取的默认值

1.6 通过init命令设置配置选项

2、创建Node.js 模块

2.1 创建一个package.json 文件

2.2 创建在另一个应用程序需要模块时将加载的文件

2.3 测试模块

3、关于包的 README 文件

3.1 创建README.md文件并将其添加到包中

3.2 更新现有包README文件

4、创建和发布无作用域的公共包

4.1 创建无作用域的公共包

4.2 检查包裹内容是否包含敏感或不必要的信息

4.3 测试您的软件包

4.4 发布无作用域的公共包


1、创建package.json文件

您可以将package.json文件添加到您的软件包中,以便于其他人管理和安装。发布到注册表的包必须包含package.json文件。

package.json文件:

  • 列出了项目的所有依赖项
  • 指定包的版本以及语义控制规则
  • 使您的构建具有重复性,因此更容易与其他开发者共享

注意:为了自己的发布的包,能够更容易的在npm官网上找到,建议最好还是在package.json文件中的description字段添加对应的描述信息。

1.1 fields 字段

package.json文件必须包含"name""version"字段。

"name"字段包含包的名称,必须是小写字母,并且可以包含连字符和下划线。

"version"字段必须采用x.x.x格式,并遵循语义版本控制指南。

1.2 Author 字段

如果要在"author"字段中包含软件包作者信息,请使用以下格式(电子邮件和网站都是可选的):

Your Name <email@example.com> (http://example.com)

示例:

{"name": "test_a","version": "1.0.0","description": "this is test package","main": "read_file.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","start": "nodemon read_file"},"author": "zhouxxx<724518201@qq.com>(spacebox.blog.csdn.net) ","license": "ISC","devDependencies": {}
}

1.3 创建 package.json 文件

可以通过CLI命令交互式来创建默认的 package.json 文件。

1、我们可以先创建一个目录,然后再进入该目录

mkdir package
cd /Users/zhou/package

2、运行一下命令:

npm init

3、根据提示,输入对应字段的信息,然后回车进入下一步。

如果创建的 package.json 所有字段,都设置为默认,可以添加参数:--yes

npm init --yes

 1.4 自定义 package.json 的问题

1、在主目录中,创建一个名为.npm-init.js的文件。

2、要添加自定义问题,请使用文本编辑器,使用prompt函数添加问题:

module.exports = prompt("what's your favorite flavor of ice cream, buddy?", "I LIKE THEM ALL");

3、要添加自定义字段,请使用文本编辑器将所需字段添加到.npm-init.js文件:

module.exports = {customField: 'Example custom field',otherCustomField: 'This example field is really cool'
}

1.5 从当前目录提取的默认值

  • name: 当前目录名
  • version: 默认 1.0.0
  • description: 来自README的信息,或空字符串""
  • scripts: 默认创建空test脚本
  • keywords:空
  • author:空
  • license: ISC
  • bugs: 当前目录中的信息(如果存在)
  • homepage: 当前目录中的信息(如果存在)

1.6 通过init命令设置配置选项

您可以为init命令设置默认配置选项。例如,要设置默认作者电子邮件、作者姓名和许可证,请在命令行上运行以下命令:

> npm set init-author-email "example-user@example.com"
> npm set init-author-name "example_user"
> npm set init-license "MIT"

2、创建Node.js 模块

2.1 创建一个package.json 文件

1、创建一个package.json 文件,在命令行中,切换到根目录或者 Node.js 模块,运行 npm init

  • 对于作用域模块作用域模块作用域模块,运行npm init --scope=@scope-name
  • 对于未限定作用域的模块未限定作用域的模块未限定作用域的模块,请运行npm init

2、为必填字段提供响应(name 和 version)以及main 属性

  • name: 模块的名字
  • version: 初始模块版本,建议遵循语义版本控制指南,从1.0.0开始

2.2 创建在另一个应用程序需要模块时将加载的文件

在文件中,添加一个函数作为exports对象的属性。这将使该函数对其他代码可用:

exports.isarray = function(arr) {let toString = {}.toString();return toString.call(arr) === '[object Array]';
}

2.3 测试模块

1、发布你的包到npm

  • 对于私有包和无作用域包,使用 npm publish
  • 对于作用域的公共包,使用 npm publish --access pulic

2、在命令行中,在项目目录之外创建一个新的测试目录。

mkdir test-directory

3、切换到新目录

cd /path/to/test-directory

4、在test目录中,安装模块:

npm install <your-module-name>

5、在test目录中,创建一个test.js文件,它需要您的模块并将模块作为方法调用。

6、在命令行上,运行node test.js。应显示发送到console.log的消息。

3、关于包的 README 文件

为了帮助其他人在npm上找到你的包,并在他们的项目中使用你的代码,我们建议在你的包目录中包含一个README文件。您的README文件可能包括安装、配置和使用软件包中代码的说明,以及用户可能发现有帮助的任何其他信息。README文件将显示在软件包页面上。

npm包的README文件必须位于包的根目录下。

3.1 创建README.md文件并将其添加到包中

1、在文本编辑器中,在包根目录中创建一个名为README.md的文件。

2、在README.md文件中,添加有关软件包的有用信息。

3、保存README.md文件。

注意:.md 文件表示Markdown 文件

3.2 更新现有包README文件

README文件仅在发布新版本的软件包时在软件包页面上更新。要更新自述文件:

1、在文本编辑器中,更新README.md文件的内容。

2、保存 README.md 文件

3、在命令行中,切换到根目录中运行如下命令:

npm version patch
npm publish

4、创建和发布无作用域的公共包

作为npm用户,您可以创建未作用域的包,用于您自己的项目,并将其发布到npm公共注册表,供其他人在他们的项目中使用。无作用域的包始终是公共的,并且仅由包名引用:

package-name

有关包作用域、访问和可见性的详细信息,请参阅 npm 包和模块简介

注意:在发布公共的非作用域npm包之前,您必须注册一个npm用户帐户。

4.1 创建无作用域的公共包

1、在命令行上,为您的包创建一个目录:

mkdir my-test-package

2、切换到包的根目录:

cd my-test-package

3、如果你使用git来管理你的包代码,在包根目录下,运行以下命令,将git-remote-url替换为你的包的git远程URL:

git init
git remote add origin git://git-remote-url

4、在软件包根目录中,运行npm init命令。

5、根据响应提示生成 package.json 文件。

6、创建一个README文件
,解释包代码是什么以及如何使用它。

4.2 检查包裹内容是否包含敏感或不必要的信息

将敏感信息发布到注册表可能会伤害用户、损害开发基础结构、修复成本高昂,并使您面临法律的诉讼的风险。我们强烈建议在将您的包发布到注册表之前删除敏感信息,例如私钥、密码、个人身份信息
(PII)和信用卡数据。

对于不太敏感的信息,如测试数据,请使用.npmignore.gitignore文件来防止发布到npm注册表。

4.3 测试您的软件包

为了减少发布bug的可能性,我们建议在将包发布到npm注册表之前对其进行测试。要测试您的包,请使用包目录的完整路径运行npm install

npm install path/to/my-package

4.4 发布无作用域的公共包

1、在命令行中,切换到包的根目录。

cd /path/to/package

2、要将公共包发布到npm注册表,请运行:

npm publish

注意:如果您使用GitHub Actions发布包,则可以为您发布的每个包生成出处信息。有关详细信息

3、要查看您的公共包页面,请访问https://npmjs.com/package/* package-name
,将package-name* 替换为您的包的名称。公共包在npm网站上的包名下面会显示public

4、测试

运行命令 npm install jiang-isarray

npm install jiang-isarray

新建文件 test.js ,内容如下:

var isArray = require('jiang-isarray')
console.log(isArray);
console.log(isArray([1,2,3,4,5]))    //  true
console.log(isArray({}))    //  false

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

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

相关文章

5G时代的APP开发:机遇与挑战

APP开发是互联网行业中的重要组成部分&#xff0c;随着5G时代的到来&#xff0c;移动 APP开发也迎来了新的机遇和挑战。 5G时代不仅会为移动 APP开发带来新的发展机遇&#xff0c;也会给移动 APP开发带来新的挑战。对于企业和开发者而言&#xff0c;5G时代带来的机遇和挑战是并…

【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境5

#尝试搭建K210的Micropython开发环境&#xff08;Win10&#xff09; #实验程序之三&#xff1a;更新频率演示 #尝试搭建K210的Micropython开发环境&#xff08;Win10&#xff09; #实验程序之三&#xff1a;更新频率演示from Maix import freqcpu_freq, kpu_freq freq.get() …

redis数据库与主从复制

目录 一 基本操作 二 执行流程 三 reids持久化 四 rdb和aof持久化的过程 五 为什么会有内存碎片 六 redis组从复制 一 基本操作 set :存放数据 例如 set 键值 内容 set k kokoko k就是键值 kokoko就是内容 get:获取数据 例如 get k 就会出来 k对应的数据 keys 查询键…

SFP3012A-ASEMI代理海矽美(MHCHXM)快恢复二极管

编辑&#xff1a;ll SFP3012A-ASEMI代理海矽美&#xff08;MHCHXM&#xff09;快恢复二极管 型号&#xff1a;SFP3012A 品牌&#xff1a;ASEMI 芯片个数&#xff1a;1 芯片尺寸&#xff1a;102MIL*2 封装&#xff1a;TO-247AC 恢复时间&#xff1a;75ns 工作温度&#…

开源快速开发平台:做好数据管理,实现流程化办公!

做好数据管理&#xff0c;可以提升企业的办公协作效率&#xff0c;实现数字化转型。开源快速开发平台是深受企业喜爱的低代码开发平台&#xff0c;拥有多项典型功能&#xff0c;是可以打造自主可控快速开发平台&#xff0c;实现一对一框架定制的软件平台。在快节奏的社会中&…

【亲测可用】Linux上安装Redis教程

一、下载并解压Redis 1、执行下面的命令下载redis&#xff1a; wget https://download.redis.io/releases/redis-6.2.6.tar.gz 2、解压redis&#xff1a; tar xzf redis-6.2.6.tar.gz 3、移动redis目录&#xff0c;一般都会将redis目录放置到 /usr/local/redis目录&#xff1a…

SpringBoot 对接微信公众号模板消息通知

效果图见测试结果&#xff0c;有问题评论 模板消息 开通模板消息功能 登录微信公众平台开通模板消息功能 (未开通时) 添加模板消息 审核通过后&#xff0c;登录微信公众平台&#xff0c;点击 广告与服务 --> 模板消息公众号如果未设置服务类目&#xff0c;则需要先设置服…

golang 中的 cronjob

引言 最近做了一个需求&#xff0c;是定时任务相关的。以前定时任务都是通过 linux crontab 去实现的&#xff0c;现在服务上云(k8s)了&#xff0c;尝试了 k8s 的 CronJob&#xff0c;由于公司提供的是界面化工具&#xff0c;使用、查看起来很不方便。于是有了本文&#xff0c…

【iOS】Cocoapods的安装以及使用

文章目录 前言一、Cocoapods的作用二、安装Cocoapods三、使用Cocoapods总结 前言 最近笔者在仿写天气预报App时用到了api调用数据&#xff0c;一般的基本数据类型我们用Xcode中自带的框架就可以转换得到。但是在和风天气api中的图标的格式为svg格式。 似乎iOS13之后Xcode中可…

mybatis_分页

目的&#xff1a; 减少数据处理量&#xff0c;提高效率 普通sql&#xff1a; 语法&#xff1a;select * from user limit startIndex,pageSize; SELECT * from user limit 3; #[0,n] mybatis_sql: 接口&#xff1a; //分页查询List<User> getUserByLimit(Map<…

如何提高代码效率——时间复杂度与空间复杂度——【C语言】

当我们面对一个问题时&#xff0c;会有许多种解题思路。我们现在的计算机技术已经达到非常先进的地步&#xff0c;所以当我们用不同的方法对待问题时&#xff0c;时间差异不会很明显&#xff0c;内存差异我们一般在平常小问题时感受不到&#xff0c;所以我们不会去纠结程序的优…

JavaEE——Bean的生命周期

目录 1、实例化Bean 2、设置Bean的属性 3、初始化Bean &#xff08;1&#xff09;、执行通知 &#xff08;2&#xff09;、初始化的前置方法 &#xff08;3&#xff09;、初始化方法 &#xff08;4&#xff09;、执行自定义方法 &#xff08;5&#xff09;、初始化的后置…

短视频账号矩阵系统源码开发部署路径

一、短视频批量剪辑的开发逻辑算法 1.视频剪辑之开发算法 自己研发视频剪辑是指通过对视频素材进行剪切、调整、合并等操作&#xff0c;利用后台计算机算法&#xff0c;进行抽帧抽组抽序进行排列以达到对视频内容进行修改和优化的目的。自己研发的视频剪辑工具可以通过后台码…

iOS中的一些锁

多线程在日常开发中能起到性能优化的作用&#xff0c;但是一旦没用好就会造成线程不安全&#xff0c;本文就来讲讲如何保证线程安全 锁 线程安全 当一个线程访问数据的时候&#xff0c;其他的线程不能对其进行访问&#xff0c;直到该线程访问完毕。简单来讲就是在同一时刻&a…

单片机中的通用LED驱动

前言 项目中需要用到很多的LED灯&#xff0c;存在不同的闪烁方式&#xff0c;比如单闪&#xff0c;双闪&#xff0c;快闪&#xff0c;慢闪等等&#xff0c;我需要一个有如下特性的LED驱动 方便的增加不同闪烁模式可以切换闪烁模式增加LED数目不会有太多的改动方便移植&#x…

【C++杂货铺】模板(文末有彩蛋哟)

文章目录 一、泛型编程二、函数模板2.1 函数模板的原理2.2 函数模板的实例化2.3 模板参数的匹配原则 三、类模板四、非类型模板参数五、模板的特化5.1 函数模板特化5.2 类模板特化 六、模板分离编译七、模板总结好书推荐&#x1f381;彩蛋 一、泛型编程 &#x1f4d6;实现一个…

Spring Boot单元测试入门指南

Spring Boot单元测试入门指南 JUnit是一个成熟和广泛应用的Java单元测试框架&#xff0c;它提供了丰富的功能和灵活的扩展机制&#xff0c;可以帮助开发人员编写高质量的单元测试。通过JUnit&#xff0c;开发人员可以更加自信地进行重构、维护和改进代码&#xff0c;同时提高代…

volley 学习笔记1--发送请求

一、概览 Volley 具有以下优势&#xff1a; 自动网络请求调度。 多个并发网络连接。 透明磁盘和具有标准 HTTP 缓存一致性的内存响应缓存。 支持请求优先级。 取消请求 API。您可以取消单个请求&#xff0c;也可以设置要取消的请求的时间段或范围。 可轻松自定义&#xff…

linux下i2c调试神器i2c-tools安装及使用

i2c-tools介绍 在嵌入式linux开发中&#xff0c;有时候需要确认i2c硬件是否正常连接&#xff0c;设备是否正常工作&#xff0c;设备的地址是多少等等&#xff0c;这里我们就需要使用一个用于测试I2C总线的工具——i2c-tools。 i2c-tools是一个专门调试i2c的开源工具&#xff…

Kafka 入门到起飞系列 - 消费者组管理、位移管理

消费者组 - Consumer Group 上文我们已经讲过消费者组了&#xff0c;我们知道消费组的存在可以保证一个主题下一个分区的消息只会被组内一个消费者消费&#xff0c;从而避免了消息的重复消费 什么是消费组 - Consumer Group&#xff1f; 消费者组是Kafka 提供的可扩展且具有容…