简单发布一个npm包

将自己封装的组件上传到 npm,并在其他项目中下载并使用,是一个非常有用的技能。看完下面这些你就可以自己完成从封装组件到上传 npm 并使用的全过程。

 1: 封装组件

首先,你需要创建一个符合标准的 npm 包。假设你已经写好了组件代码,下面是一个简单的目录结构示例:

my-component-package/├── src/│   └── MyComponent.vue├── package.json├── README.md├── .npmignore└── dist/

2: 创建 package.json

在项目根目录下,使用npm init命令生成 package.json

npm init

这个命令会引导你填写包的信息,包括包名、版本、描述、入口文件等。确保你填写正确,尤其是包名(它将作为你发布到 npm 上的包名)。

一个正常的 package.json 文件如下这样:

//具体的有不同 大差不差
{"name": "my-component","version": "1.0.0","description": "A reusable Vue component","main": "dist/MyComponent.js","scripts": {"build": "webpack --config webpack.config.js"},"keywords": ["vue","component"],"author": "my","license": "MIT","repository": {"type": "git","url": "git+https://github.com/my/my-component.git"},"bugs": {"url": "https://github.com/my/my-component/issues"},"homepage": "https://github.com/my/my-component#readme"
}

3: 配置 .npmignore

如果你不想上传某些文件到 npm,比如源代码中的测试文件、构建工具配置等,可以通过 .npmignore 文件来排除它们。一个简单的 .npmignore 文件可能如下:

node_modules
dist
.DS_Store 

4: 打包组件

如果你的组件是一个 Vue 组件或者需要编译的代码(例如 ES6/TypeScript),你需要使用构建工具进行打包,生成可以供 npm 用户使用的文件。

比如,如果你使用 Vue 和 Webpack,可以配置 webpack.config.js 来打包文件。假设你使用的是 ES6 模块,打包后的文件可能是一个 dist 文件夹中的 MyComponent.js

5: 登录 npm 账户

如果你还没有 npm 账户,需要先注册一个。访问 npm 官网 并创建一个账户。

然后使用命令登录 npm 账户:

npm login

该命令会提示你输入用户名、密码和邮箱地址。

6: 发布到 npm

  1. 构建代码:确保你的代码已经构建完毕,并且 dist 文件夹中包含你打包后的组件文件(如 MyComponent.js)。

  2. 发布组件:执行以下命令将你的组件包发布到 npm:

npm publish --access public
  • 如果你是首次发布该包,npm 会自动创建这个包并将其上传。(先去npm官网看看有没有同名的包,不要重名了)

  • 如果你已经发布过这个包,并且只是想更新版本(注意版本号需要增大),可以修改 package.json 中的版本号(例如从 1.0.0 改为 1.0.1),然后再次执行 npm publish

注意: --access public 选项是为了让包是公开的,供任何人下载。如果你只想发布给特定用户或团队使用,可以使用 --access restricted(适用于私有包)。

7: 使用组件

发布完成后,你可以在任何其他项目中通过 npm 安装并使用该组件包。

  1. 在其他项目中运行以下命令安装你的包:

npm install my-component

     2.然后你可以在你的 Vue 项目中导入并使用该组件(假设是 Vue 组件):

import MyComponent from 'my-component-package';export default {components: {MyComponent}
}

8: 更新组件

如果你需要更新组件,可以在本地修改代码并打包,然后更新版本号。之后执行以下命令来重新发布新版本:

npm version patch   # 或者 use `minor` 或 `major`
npm publish

总结

通过以上步骤,你就可以成功地将自己的封装组件上传到 npm,其他开发者可以通过 npm 安装并使用你的组件。

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

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

相关文章

嵌入式AI STM32部署卷积神经网络的魔法棒

基于STM32部署卷积神经网络控制设备方案-AI项目-STM32部署卷积神经网络方案-红外信号复制方案-轨迹识别 项目包含下述内容 硬件部分、PCB制板、BOM表文件等等 (Hardware)外壳、3D打印文件 (3D_print)软件程序、用于电子法棒的软件程序 AI Keil等等(Software)QT上位机动作识别…

GCP Cloud Observability 是什么,有什么使用场景

GCP Cloud Observability 是 Google Cloud Platform (GCP) 提供的一组工具和服务,用于监控、日志记录、追踪和调试应用程序和基础设施的健康和性能。通过收集和分析遥测数据(如指标、日志和追踪信息),Cloud Observability 有助于理…

UE4_用户控件_2_按钮的动态效果

效果展示: 操作步骤: 1、新建一个触发Actor,更名为BP_EventTrigger。 这个蓝图类可以拖拽到场景中好多次,生成好多实例。但是我希望每次触发创建的用户控件都是不同的。添加Capsule Collision。 修改胶囊体半高和半径都为156 BP_…

Bert各种变体——RoBERTA/ALBERT/DistillBert

RoBERTa 会重复一个语句10次,然后每次都mask不同的15%token。丢弃了NSP任务,论文指出NSP任务有时甚至会损害性能。使用了BPE ALBERT 1. 跨层参数共享 可以共享多头注意力层的参数,或者前馈网络层的参数,或者全部共享。 实验结果…

ADC(三):注入组的使用

有关ADC的基础知识请参考标准库入门教程 ADC(三):注入组的使用 1、规则组软件触发注入组自动注入2、规则组外部触发注入组自动注入3、规则组软件触发注入组外部触发(TIM2_CC1)4、规则组软件触发注入组外部触发&#xf…

代码随想录算法【Day4】

Day4 1.链表的题目,要在草稿纸上模拟清晰后就简单了 2.双指针更加灵活的应用。 3.环形链表多练习。 24. 两两交换链表中的节点 class Solution { public:ListNode* swapPairs(ListNode* head) {ListNode* _dummyHead new ListNode(0); //虚拟头结点_dummyHead…

(南京观海微电子)——GH7009开机黑屏案例分析

一、 现象描述: 不良现象: LVDS模组,开机大概2秒后就黑屏。 二、问题分析 等主机进入Kernel 后做以下测试: 1、手动reset LCM 后 可以显示正常; 总结: 1)uboot 部分HS 太窄,仅有4个clk宽度&am…

PaddleOCR文字识别模型的FineTune

一、paddleOCR paddle框架为百度开发的深度学习框架,其中对于文字检测、识别具有较为便利的开发条件。同时PaddleOCR文字识别工具较为轻量化,并可按照任务需求进行model的finetune,满足实际的业务需求。 源码来源:githubOCR 在gi…

Spark生态圈

Spark 主要用于替代Hadoop中的 MapReduce 计算模型。存储依然可以使用 HDFS,但是中间结果可以存放在内存中;调度可以使用 Spark 内置的,也可以使用更成熟的调度系统 YARN 等。 Spark有完善的生态圈: Spark Core:实现了…

影刀进阶指令 | Kimi (对标ChatGPT)

文章目录 影刀进阶指令 | Kimi (对标ChatGPT)一. 需求二. 流程三. 实现3.1 流程概览3.2 流程步骤讲解1\. 确定问题2\. 填写问题并发送3\. 检测答案是否出完 四. 运维 影刀进阶指令 | Kimi (对标ChatGPT) 简单讲讲RPA调用kimi实现…

Spring Security3.0.2版本

前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…

--spring.profiles.active=prod

rootproduct-qualification:~# ps -ef | grep java root 5110 1 3 16:57 ? 00:00:54 java -jar productQualification.jar --spring.profiles.activeprod root 6476 5797 0 17:26 pts/0 00:00:00 grep --colorauto java好的,你使用 ps …

力扣矩阵-算法模版总结

lc-73.矩阵置零-(时隔14天)-12.27 思路:(23min22s) 1.直接遍历遇0将行列设0肯定不行,会影响后续判断,题目又要求原地算法,那么进一步考虑是否可以将元素为0,其行列需要设为0的位置给存储下来,最后再遍历根据…

Markov test笔记

补充知识 来源于数学之美第五章: 到了 19 世纪,概率论的发展从相对静止的随机变量的研究发展到随机变量的时间序列 ( s 1 , s 2 , s 3 , … ) (s_1, s_2, s_3, \dots) (s1​,s2​,s3​,…),即随机过程(动态的)。这在…

DeepSpeed 使用 LoRA 训练后文件结构详解

DeepSpeed 使用 LoRA 训练后文件结构详解 在大语言模型(LLM)的训练过程中,DeepSpeed 提供了强大的分布式训练能力,而 LoRA(Low-Rank Adaptation)通过参数高效微调技术显著减少了资源占用。完成训练后&…

GitHub 桌面版配置 |可视化界面进行上传到远程仓库 | gitLab 配置【把密码存在本地服务器】

🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️ 文章目录 桌面版安装包下载clone 仓库操作如下GitLab 配置不再重复输入账户和密码的两个方…

docker-开源nocodb,使用已有数据库

使用已有数据库 创建本地数据库 数据库:nocodb 用户:nocodb 密码:xxxxxx修改docker-compose.yml 默认网关的 IP 地址是 172.17.0.1(适用于 bridge 网络模式)version: "2.1" services:nocodb:environment:…

uniapp 前端解决精度丢失的问题 (后端返回分布式id)

原因: 后端使用分布式id, id为19位数,导致精度丢失 ,前端解决方法 这个是通过浏览器请求回来的数据,这个时候id 数据已经丢失了,在数据库查询不到,在调获详情接口的时候会有问题 实际的: 解决…

SQL-leetcode-180. 连续出现的数字

180. 连续出现的数字 表:Logs -------------------- | Column Name | Type | -------------------- | id | int | | num | varchar | -------------------- 在 SQL 中,id 是该表的主键。 id 是一个自增列。 找出所有至少连续出现三次的数字。 返回的…

【教程】通过Docker运行AnythingLLM

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 官方教程:Local Docker Installation ~ AnythingLLM 1、先创建一个目录用于保存anythingllm的持久化文件: sudo mkdir /app su…