从0开始搭建、上传npm包

从0开始搭建、上传npm包

  • 1、上传一个简单获取水果价格的包
    • 创建 `vite` 项目
    • 在项目根目录 `src` 文件夹中创建 `index.ts` 文件,文件内容如下:
    • 在 `main.ts` 文件中导入、导出上面创建的方法
    • 创建 `vite.config.ts` 配置文件,文件内容如下
    • 配置 `package.json` 文件,文件内容如下
    • 添加 `README.md` 项目说明文件
    • 打包项目
    • 注册 `npm` 账号
    • 项目中使用包
    • 修改 `npm` 包内容方法
  • 2、上传一个简单组件
    • 创建 `vite` 项目
    • 创建自定义组件
    • 创建对应 `index.ts` 文件,文件内容如下:
    • 配置 `vite.config.ts` 文件,文件内容如下:
    • 打包发布
    • 在页面中使用组件

1、上传一个简单获取水果价格的包

创建 vite 项目

npm create vite

在这里插入图片描述在这里插入图片描述在这里插入图片描述

在项目根目录 src 文件夹中创建 index.ts 文件,文件内容如下:

/*** 获取水果价格的方法* @param name 水果名称* @returns*/
export const getPrice = (name: string) => {let price: number = 0.0;switch (name) {case "苹果":price = 9.99;break;case "香蕉":price = 7.89;break;case "梨":price = 6.65;break;case "榴莲":price = 9.65;break;case "菠萝":price = 5.42;break;default:throw new Error("未匹配到水果价格,请重新录入");}return price;
};

main.ts 文件中导入、导出上面创建的方法

import { getPrice } from "./index";export { getPrice };

创建 vite.config.ts 配置文件,文件内容如下

import { defineConfig } from "vite";
export default defineConfig({build: {outDir: "dist", // 自定义构建输出目录target: "es2020",lib: {entry: "src/main.ts", // 入口文件路径formats: ["es", "cjs"],},},
});

配置 package.json 文件,文件内容如下

{"name": "bagen-getPrice","private": false,"version": "1.0.1","type": "module","main": "dist/bagen-getPrice.cjs","module": "dist/bagen-getPrice.js","scripts": {"serve": "vite","build": "tsc && vite build","preview": "vite preview"},"devDependencies": {"typescript": "^5.2.2","vite": "^5.0.8"}
}

添加 README.md 项目说明文件

打包项目

npm run build

注册 npm 账号

  • 官网
  • 配置 npm 源,在项目根目录中运行以下代码
npm config set registry https://registry.npmjs.org
  • 登录 npm

输入:姓名 和 邮箱

npm login
  • 发布
npm publish

在这里插入图片描述

项目中使用包

  • 安装包
npm install bagen-getPrice -S
  • 页面中使用
import { getPrice } from 'bagen-getPrice'getPrice('苹果')

修改 npm 包内容方法

  • 安装包
npm install bagen-getPrice -S
  • 修改代码
  • 代码在 node_modules 文件夹中
  • package.json 文件中 更新版本号
  • 在自己包目录中运行如下代码:
npm publish

2、上传一个简单组件

创建 vite 项目

npm create vite

创建自定义组件

在这里插入图片描述

<template><input type="text" v-model="keyword" @keydown.enter="searchPriceHandle" /><br />{{ keyword }} {{ price }}
</template><script setup lang="ts">
import { ref } from "vue";
const keyword = ref<string>("");
const price = ref<string | number>("");/*** 查询价格方法*/
const searchPriceHandle = () => {switch (keyword.value) {case "苹果":price.value = 9.98;break;case "香蕉":price.value = 8.88;break;case "菠萝":price.value = 6.48;break;case "梨":price.value = 9.78;break;default:price.value = 0.0;throw new Error("未匹配到水果名称,请重新输入");}
};
</script><style lang="scss" scoped></style>

创建对应 index.ts 文件,文件内容如下:

  • components ->index.ts
import { App } from "vue";
import custom from "./custom.vue";const install = (app: App<Element>) => {app.component("Bg-Custom", custom);
};export default {install,
};

配置 vite.config.ts 文件,文件内容如下:

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";export default defineConfig({plugins: [vue()],build: {outDir: "dist", // 自定义构建输出目录target: "es2020",lib: {entry: "src/components/index.ts", // 入口哦文件路径name: "bg-get-price", // 暴漏的全局变量(最好把名称都统一)fileName: "bg-get-price", // 输出的包文件名,默认取 package.json 的 name},rollupOptions: {// 确保外部化处理那些你不想打包进库的依赖external: ["vue"],output: {// 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量globals: {vue: "Vue",},},},},
});

打包发布

打包发布过程同上

在页面中使用组件

  • 安装包
npm install bg-get-price -S
  • 注册,main.ts 文件中注册,代码如下:
import bgGetPrice from "bg-get-price";
// 注册,重点
app.use(bgGetPrice)
  • 引用
<bg-get-price></bg-get-price>

必须打包上传时候的名称一致
在这里插入图片描述

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

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

相关文章

Container 命令ctr、crictl 命令

1、 Containerd和Docker的架构区别 Docker vs. Containerd&#xff1a; 2、ctr & crictl的区别 ctr是containerd的一个客户端工具 crictl 是 CRI 兼容的容器运行时命令行接口&#xff0c;可以使用它来检查和调试 Kubernetes 节点上的容器运行时和应用程序 crictl 则直接对…

运维自动化bingo前端

项目目录结构介绍 项目创建完成之后&#xff0c;我们会看到bingo_web项目其实是一个文件夹&#xff0c;我们进入到文件夹内部就会发现一些目录和文件&#xff0c;我们简单回顾一下里面的部分核心目录与文件。 ├─node_modules/ # node的包目录&#xff0c;项目运行的依赖包…

马尔科夫链--基础知识

马尔可夫链&#xff08;Markov Chain&#xff09;是一种数学系统&#xff0c;它经过从一个状态到另一个状态的转换&#xff0c;这些转换遵循马尔可夫性质&#xff0c;即未来的状态只依赖于当前的状态&#xff0c;而与过去的状态&#xff08;即如何到达当前状态&#xff09;无关…

《Python 网络爬虫简易速速上手小册》第1章:Python 网络爬虫基础(2024 最新版)

文章目录 1.1 网络爬虫简介1.1.1 重点基础知识讲解1.1.2 重点案例&#xff1a;社交媒体数据分析1.1.3 拓展案例1&#xff1a;电商网站价格监控1.1.4 拓展案例2&#xff1a;新闻聚合服务 1.2 网络爬虫的工作原理1.2.1 重点基础知识讲解1.2.2 重点案例&#xff1a;股票市场数据采…

1802907-97-6,炔基PEG5甲基四嗪,具有良好的水溶性和生物相容性

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;1802907-97-6&#xff0c;甲基四嗪-五聚乙二醇-炔&#xff0c;甲基四嗪-五聚乙二醇-炔基&#xff0c;炔基PEG5甲基四嗪&#xff0c;Methyltetrazine-PEG5-alkyne &#xff0c;Alkyne-PEG5-Methyltetrazine 一、基本信…

WebChat——一个开源的聊天应用

Web Chat 是开源的聊天系统&#xff0c;支持一键免费部署私人Chat网页的应用程序。 开源地址&#xff1a;https://github.com/loks666/webchat 目录树 TOC &#x1f44b;&#x1f3fb; 开始使用 & 交流&#x1f6f3; 开箱即用 A 使用 Docker 部署B 使用 Docker-compose…

人工智能福利站,初识人工智能,图神经网络学习,第一课

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

(2)(2.13) Rockblock Satellite Modem

文章目录 前言 1 支持的MAVLink命令信息 2 设置 3 使用方法 4 数据成本 5 参数 前言 &#xff01;Note 该功能仅适用于 ArduPilot 4.4 或更高版本&#xff0c;并且要求飞行控制器支持 LUA 脚本(LUA Scripts)。 RockBLOCK 卫星调制解调器可实现与 ArduPilot 飞行器的全球…

C++ 语法文件

程序运行时产生的数据都属于临时数据&#xff0c;程序结束就会被释放。 通过文件可以可以将数据持久化 c中对文件操作需要包含头文件fstream 文件的类型分为两种 1.文本文件 文件以文本的ASCII码形式存储在计算机中 2.二进制文件 稳重以文本的二进制形式存储在计算机中 用…

MySQL 小技巧:利用 xtrabackup 完全备份,增量备份及还原

案例&#xff1a;利用 xtrabackup 8.0 完全备份,增量备份及还原 MySQL8.0 在面对海量数据时&#xff0c;我们无法做到每天全量备份&#xff0c;因此 只能每周做一次全量备份。 而每天的话则进行增量备份&#xff0c;确保数据安全。 注意点&#xff1a;MySQL 8.0.26 版本对应需要…

三层交换组网实验(华为)

思科设备参考&#xff1a;三层交换组网实验&#xff08;思科&#xff09; 一&#xff0c;技术简介 三层交换技术的出现&#xff0c;解决子网必须依赖路由器进行管理的问题&#xff0c;解决传统路由器低速、复杂所造成的网络瓶颈问题。一个具有三层交换功能的设备可简单理解为…

1-3 动手学深度学习v2-线性回归的从零开始实现-笔记

手动创建训练数据集 根据带有噪声的线性模型构造一个人造数据集。我们使用线性模型参数 w [ 2 , − 3.4 ] T \pmb{w} [2,-3.4]^{T} w[2,−3.4]T、 b 4.2 b 4.2 b4.2和噪声项 ϵ \epsilon ϵ生成数据集及其标签&#xff1a; y X w b ϵ \pmb{y} \pmb{Xw}b\epsilon yXw…