如何在 npm 上发布一个 vue-cli 构建 Vue3+TypeScript 的项目?

本文详细介绍了如何在Vue3项目中新增packages文件夹,开发和注册组件,配置package.json打包命令,以及如何将项目打包并发布到npm。步骤包括结构调整、组件开发、main.ts应用和打包流程详解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、变更目录结构名称

首先我们看到的是一个新建好的 vue3 项目结构
在这里插入图片描述

1.1、新增packages文件夹用于存放开发的组件。

在这里插入图片描述

二、开始开发组件。

在packages中新建一个这样的目录结构,因为我这边配置的css预编译语言是scss 也可根据选择自己配置less,stylus。
在这里插入图片描述
首先我们先找到对应的Button中的index.ts

// packages/Button/index.ts

// 引入组件,组件需要声明 name
import Button from './index.vue'

// 为了单个组件按需引入,所以我们也给组件添加一个install方法
Button.install = function (Vue: any) {
  Vue.component(Button.name, Button)
}

export default Button

随即我们找到对应的packages中的index.ts


// 导入组件
import tbButton from './Button/index'

// 用于遍历注册  这个tbButton一定要是我们对应匹配的组件 name
const components = [tbButton]
// install 方法:因为 Vue.use 的时候找的就是install方法
const install: any = function (Vue: any) {
  if (install.installed) return
  install.installed = true
  // 注册全局组件
  components.map((component) => {
    Vue.component(component.name, component)
  })
}

if (typeof window !== 'undefined' && (window as any).Vue) {
  install((window as any).Vue)
}

export default {
  // 导出的对象需拥有 install 方法
  install,
  // 组件列表
  tbButton
}

三、使用组件。

3.1、在main.ts中写入组件。

import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";

import Xiaoxiannan from "../packages/index";
const app = createApp(App);
app.use(Xiaoxiannan);
app.use(store).use(router).mount("#app");

在这里插入图片描述
页面效果随即也就出现了
在这里插入图片描述

四、如何将项目打包?

那么好这个时候我们的组件也就开发好了,我们如何打包,然后发布到 npm 方便大家使用呢?

4.1、配置 package.json 打包初始化。

首先我们打开package.json
添加如下组件信息

name: 包名,该名不能和已有的名称冲突,

version: 版本号,不能和历史版本号相同,

description: 介绍声明,

main: 打包文件,指向编译后的包文件,

private:是否私有,需要修改为 false 才能发布到 npm;

license:开源协议。

author:作者;

在这里插入图片描述

4.2、在package.json文件scripts标签中新增两个命令。

在这里插入图片描述

    "lib": "vue-cli-service build --target lib --name tinkerbell-ui-next --dest lib packages/index.ts",
    "go": "npm publish --access=public"

第一个lib对应的也就是vue文档给出的库打包命令
在这里插入图片描述

targetnamedestentry
lib 开启打包库打包后的包文件名打包指向目录打包入口

这个时候我们就可以在终端执行 npm run lib 命令打包
在这里插入图片描述

五、推送项目到npm。

首先我们需要在文件根目录创建一个 .npmignore 文件,他的作用与.gitignore是一样的
在这里插入图片描述

.DS_Store
node_modules/
src/
packages/
public/
vue.config.js
babel.config.js
*.map
*.html

# local env files
.env.local
.env.*.local

# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw*

在之后如果原先 npm 更改过淘宝镜像 那么需要变更回原有的 npm 镜像

npm config set registry http://registry.npmjs.org 

再有我们就可以根据 npm 官网进行注册账号,如果原来没有账号的话

用户注册好账户后我们就可以使用

npm login

输入对应的 npm 账号密码,进行登录

在之后我们就可以使用 我们早先在 package.json 文件scripts标签中新增的go指令进行上传

npm run go
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

归来巨星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值