当前位置: 首页 > news >正文

发布npmjs组件库

一.初始化项目

1.用Vite创建空项目

2.安装打包与声明文件插件

pnpm i -D vite-plugin-dts sass

二.首先修改项目内容

// src\index.ts
import { type App } from 'vue';
import oneComponent from "./components/oneComponent/index.vue";
import twoComponent from "./components/twoComponent/index.vue";export { oneComponent,twoComponent } //实现按需引入*
oneComponent.name='oneComponent';
twoComponent.name='twoComponent';
const components = [oneComponent,twoComponent];const install = (app: App) => {components.forEach((component) => {app.component(component.name || component.__name || 'unknow', component);});
};
export type { twoComponentOption, twoComponentProps } from './types'export default { install } // 批量的引入*node
// main.ts
import { createApp } from 'vue'
import './style.css'
import App from './App.vue'createApp(App).mount('#app')
// vite/plugins/commponent.ts import Components from 'unplugin-vue-components/vite'
export default () => {return Components({ //自动导入 components下的组件dirs: ['src/components'],//自动在types下新建components.d.ts文件并声明公共组件类型dts: 'src/types/components.d.ts',})
} 
// vite/plugins/index.tsimport vue from '@vitejs/plugin-vue';
import commponents from './commponent' 
import dts from 'vite-plugin-dts';
export default (): [] => {const vitePlusgins: any = [];vitePlusgins.push(vue({script:{defineModel: true}}));vitePlusgins.push(dts({tsconfigPath:'./tsconfig.app.json',include: ['src/**/*.ts','src/**/*.vue'],exclude:['src/types/components.d.ts'],·outDir: 'dist/types',insertTypesEntry: true,rollupTypes:true}));vitePlusgins.push(commponents()); return vitePlusgins
}

//vite.config.ts
import { type ConfigEnv, defineConfig, type UserConfig } from 'vite'
import createPlugins from './vite/plugins'
import path from 'path'
// https://vite.dev/config/
export default defineConfig(({  }: ConfigEnv): UserConfig => {// const env = loadEnv(mode, process.cwd());return {plugins: createPlugins(),resolve: {alias: {'@': path.resolve(__dirname,'src')}},build:{lib:{entry: path.resolve(__dirname,'src/index.ts'),name: 'MyVue3Lib',fileName: (format) => `my-vue3-lib.${format}.js`},rollupOptions: {external: ['vue'],output: {globals: {vue: 'Vue'}}}}}
})
// package.json{"name": "my-vue3-lib-comlibrary","version": "0.0.2","type": "module","main": "./dist/my-vue3-lib.umd.js","module": "./dist/my-vue3-lib.es.js","types": "./dist/types/index.d.ts","files": ["dist"],"exports": {".": {"types": "./dist/types/index.d.ts","import": "./dist/my-vue3-lib.es.js","require": "./dist/my-vue3-lib.umd.js"},"./dist/my-vue3-lib.css": "./dist/my-vue3-lib.css"},"scripts": {"dev": "vite","build": "vue-tsc -b && vite build","preview": "vite preview","pub": "npm run build && npm publish"},"peerDependencies": {"vue": "^3.5.18"},"dependencies": { "sass": "^1.90.0","vue": "^3.5.18"},"devDependencies": {"@types/node": "^24.2.1","@vitejs/plugin-vue": "^6.0.1","@vue/tsconfig": "^0.7.0","typescript": "~5.8.3","unplugin-auto-import": "^20.0.0","unplugin-vue-components": "^29.0.0","vite": "^7.1.2","vite-plugin-dts": "^4.5.4","vue-tsc": "^3.0.5"}
}
// tsconfig.app.json{"extends": "@vue/tsconfig/tsconfig.dom.json","compilerOptions": {"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",/* Linting */"strict": true,"noUnusedLocals": true,"noUnusedParameters": true,"erasableSyntaxOnly": true,"noFallthroughCasesInSwitch": true,"noUncheckedSideEffectImports": true,"baseUrl": ".","allowJs": true,"paths": {"@/*": ["src/*"]},"allowSyntheticDefaultImports": true,},"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"]
}

// tsconfig.node.json
{"compilerOptions": {"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo","target": "ES2023","lib": ["ES2023"],"module": "ESNext","skipLibCheck": true,/* Bundler mode */"moduleResolution": "bundler","allowImportingTsExtensions": true,"verbatimModuleSyntax": true,"moduleDetection": "force","noEmit": true,/* Linting */"strict": true,"noUnusedLocals": true,"noUnusedParameters": true,"erasableSyntaxOnly": true,"noFallthroughCasesInSwitch": true,"noUncheckedSideEffectImports": true},"include": ["vite.config.ts"]
}
// tsconfig.ts
{"files": [],"references": [{ "path": "./tsconfig.app.json" },{ "path": "./tsconfig.node.json" }]
}

http://www.lryc.cn/news/625178.html

相关文章:

  • AopAutoConfiguration源码阅读
  • 鼠标右键没有“通过VSCode打开文件夹”
  • JVM学习笔记-----类加载
  • FPGA-Vivado2017.4-建立AXI4用于单片机与FPGA之间数据互通
  • Google 的 Opal:重新定义自动化的 AI 平台
  • WPF 打印报告图片大小的自适应(含完整示例与详解)
  • Rust 入门 生命周期-next2 (十九)
  • 牛津大学xDeepMind 自然语言处理(1)
  • Centos7 使用lamp架构部署wordpress
  • 接口和抽象类的区别(面试回答)
  • 【深度长文】Anthropic发布Prompt Engineering全新指南
  • Java面向对象三大特性:封装、继承、多态深度解析与实践应用
  • ⭐CVPR2025 RigGS:从 2D 视频到可编辑 3D 关节物体的建模新范式
  • 音频分类模型笔记
  • OOP三大特性
  • 【计算机视觉与深度学习实战】05计算机视觉与深度学习在蚊子检测中的应用综述与假设
  • 网络基础——协议认识
  • Pytest项目_day18(读取ini文件)
  • Unity 中控开发 多路串口服务器(一)
  • 深层语义知识图谱:提升NLP文本预处理效果的关键技术
  • C++ 多进程编程深度解析【C++进阶每日一学】
  • 一个基于纯前端技术实现的五子棋游戏,无需后端服务,直接在浏览器中运行。
  • 深度学习篇---softmax层
  • Maven 生命周期和插件
  • 大数据分析-读取文本文件内容进行词云图展示
  • 大厂求职 | 2026海尔校园招聘,启动!
  • Vuex 状态持久化企业级解决方案
  • ​Kali Linux 环境中的系统配置文件与用户配置文件大全
  • MongoDB 从入门到精通:安装配置与基础操作指令详解
  • 计算机组成原理(9) - 整数的乘除法运算