构建npm组件包并打包上传到npm官网

avatar
作者
猴君
阅读量:0

vite+js+v3简略搭建(笔记用)

原作者:https://juejin.cn/post/7119827361092108301?searchId=20240724094258A72138D981DC0419C33E

1.npm create vite@latest # 使用npm安装vite脚手架  2.先install项目,然后改造: 	修改:./src -> ./examples 	新增:./packages(该文件夹用于存放开发的组件) 	找到项目根目录下的index.html文件,将里面的script标签的src属性内容由/src/main.js替换为/examples/main.js,即可重新访问本地 	 3.编写组件,这里我啥也不写,就一个页面塞点简单内容,当作一个小组件 	组件位置packages\TaskName\src\task.vue 	内容: 	<script setup name="task"> 	import { ref } from 'vue' 	const msg = ref('Vite + Vue3') 	 	const count = ref(0) 	</script> 	 	<template> 	  <h1>{{ msg }}</h1> 	</template> 	 	<style scoped> 	.read-the-docs { 	  color: #888; 	} 	</style> 	添加packages\TaskName\index.js文件用于导出该组件: 	import TaskName from './src/task.vue'; 	 	TaskName.install = (App) => { 		App.component(TaskName.__name, TaskName); 	}; 	 	export default StarrySky; 	添加packages\index.js文件,用于导出所有的组件 	import TaskName from './TaskName';  	//按需引入 	export { TaskName}; 	const components = [TaskName]; 	const install = (App) => { 		components.forEach((item) => { 			App.component(item.__name, item); 		}); 	}; 	export default { 		install, 	}; 	 4.vite.config.js文件修改 	输出内容到lib文件夹,打包入口文件设置为./packages/index.js文件 	import { defineConfig } from 'vite'; 	import vue from '@vitejs/plugin-vue'; 	import { resolve } from 'path'; 	 	export default defineConfig({ 		plugins: [vue()], 		build: { 			outDir: 'lib', 			lib: { 				entry: resolve(__dirname, 'packages/index.js'), //指定组件编译入口文件 				name: 'Vue3ViteDemo', 				fileName: 'vue3-vite-demo', 			},//库编译模式配置 			rollupOptions: { 				// 确保外部化处理那些你不想打包进库的依赖 				external: ['vue'], 				output: { 					// 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量 					globals: { 						vue: 'Vue', 					}, 				}, 			},// rollup打包配置 		}, 	}); 	 5.执行npm run build ,会生成lib文件夹,里面包含了UMDESM规范打包的几个js库文件,还有css样式文件,整个组件库文件最终都会输出在lib文件夹下  6.修改package.json配置 	{ 	  "name": "vue3-vite-demo",//名字 	  "private": false,   //这个要改掉的,设为私有不能上传的 	  "version": "0.0.1", //版本号。每次更新都得修改 	  "type": "module", 	  "keywords": [ 	    "vite-demo" //npm上搜索的关键字 	  ], 	  "scripts": { 	    "dev": "vite", 	    "build": "vite build", 	    "preview": "vite preview" 	  }, 	  "files": [ 	    "lib" 	  ], 	  "main": "lib/vue3-vite-demo.umd.js",//包函数入口文件 	  "module": "lib/vue3-vite-demo.es.js",//ESM标准入口 	  "exports": { 	    "./lib/style.css": "./lib/style.css",//css文件需要暴露否则样式引入会报错 	    ".": { 	      "import": "./lib/vue3-vite-demo.js", 	      "require": "./lib/vue3-vite-demo.umd.js" 	    } 	  }, 	  "dependencies": { 	    "vue": "^3.4.31" 	  }, 	  "devDependencies": { 	    "@vitejs/plugin-vue": "^5.0.5", 	    "vite": "^5.3.4", 	  } 	} 	 7.设置忽略文件 根目录添加 .npmignore文件 	.DS_Store 	node_modules 	/dist 	 	# 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* 	 	# 以下是新增的 	# 要忽略目录和指定文件 	.vscode 	examples/ 	packages/ 	public/ 	vite.config.js 	*.map 	*.html 8.npm login 登录 登录前需要切一下官方的源 npm config set registry https://registry.npmjs.org  有时候可能要科学上网,不行就只能构建私有库了  9.npm publish 推送  10.使用 	npm install  vue3-vite-demo @latest -D 	mian.js中添加全局引用 	//main.ts or main.js 	import { createApp } from 'vue' 	import Vue3ViteDemo from 'vue3-vite-demo'; 	import 'vue3-vite-demo/lib/style.css'; 	import './style.css' 	import App from './App.vue' 	 	const app = createApp(App); 	 	app.use(Vue3ViteDemo); 	app.mount('#app');   	组件中使用就是 	<task /> 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!