当前位置:   article > 正文

npm发布Vue组件_vue 发布组件

vue 发布组件

一、前言

        本文主要介绍如何把一个vue组件通过vite编译发布到NPM平台。

二、准备工作

        vue版本:^3.3.11

        node版本:v20.11.0

        npm版本:v10.2.4

        一个NPM平台账号

三、思路

        1、编写Vue组件

        2、把Vue组件提成一个插件

        3、编写编包脚本

        4、进行NPM发布

四、实现

        1、编写Vue组件

  1. <template>
  2. <button class="btn">{{name}}</button>
  3. </template>
  4. <style scoped>
  5. .btn { color: 'blue' }
  6. </style>
  7. <script lang="ts">
  8. export default {
  9. name: 'CunstomButton',
  10. props: ['text'],
  11. data() {
  12. return {}
  13. },
  14. mounted() {}
  15. }
  16. </script>

  注:此时的组件文件还在src文件里。

        2、把Vue组件提成一个插件

        把组件提到src平级的文件夹中packages中,并且创建一个index.ts文件(通过index.ts 统一管理发布的组件)

        编写index.ts把组件改写成插件的导入方式:

        方法一:

  1. import CunstomButton from './components/CunstomButton.vue';
  2. // 把需要导出的组件统一提到这个公共文件,在项目的main.ts中导入
  3. const components = [CunstomButton];
  4. export default (app: any) => {
  5. components.forEach(component => {
  6. app.component(component.name, component);
  7. });
  8. }

        方法二:

  1. // 通过index.ts 统一管理发布的组件
  2. import CunstomButton from './components/CunstomButton.vue';
  3. const myPlugin = {
  4. install: (app: any)=>{
  5. app.component('CunstomButton', CunstomButton);
  6. }
  7. }
  8. export default myPlugin;

        3、编写编包脚本

        与src平级创建一个build文件夹,增加一个lib.config.ts

  1. import { defineConfig } from 'vite';
  2. import {resolve} from 'path';
  3. import vue from '@vitejs/plugin-vue'
  4. export default defineConfig({
  5. build: {
  6. outDir: 'dist',
  7. lib: {
  8. entry: resolve(__dirname, '../packages/index.ts'),
  9. name: 'large-screen-dashboard', //对外暴露的组件名称
  10. fileName: (format)=> `large-screen-dashboard-${format}.js` //umd(require导入方式) es(import导入方式)
  11. },
  12. rollupOptions: {
  13. // 不进行打包的组件
  14. external: ['vue'],
  15. output: {
  16. //针对于umd模式下为外部化依赖提供一个全局的变量
  17. globals: {
  18. vue: 'Vue' //对应exter里的vue, 对于UMD模式导入后,可以使用Vue.xxx
  19. }
  20. }
  21. },
  22. },
  23. // 插件:需要把哪些文件打包成一个库文件
  24. plugins: [vue({
  25. // 包括哪些文件
  26. include: [/\.vue$/]
  27. })]
  28. })
        在package.json中增加编译命令
  1. "scripts":{
  2. ...
  3. "build:component": "vite build --config ./build/lib.config.ts"
  4. ...
  5. }

        

        4、进行NPM发布

                1、npm发布命令行

命令描述

npm login

登录npm

npm beta (npm publish --tag beta)  

发布测试版本 beta,需要在package.json中的version增加后缀'-beta',eg:.0.0.0-beta

npm publish

发布正式版本

npm unpublish --force

撤销发布的包

npm deprecate preject 'message'

增加包的警告信息,当发布的包不能使用,可以在message中说明,用户安装时可以显示

npm version

使用npm 自动跟踪版本号,不需要发布前手动修改package.json中的版本号

第一位-major: 主版本号的更新 //1.0.3  

npm version major

第二位-minor: 次版本号的更新 //0.1.3  

npm version minor

第三位-patch: 补丁号 // 0.0.4  

npm version patch

第四位-premajor: 预发布版本号 // 1.0.4-0   npm version premajor

npm version preminor

npm version prepatch

npm version prerelease

              2、遇见的问题记录

        

问题描述原因解决方法

npm publish时报错:This package has been marked as private

认为项目是私有的

package.json中private修改为true

npm pubilsh时报错:

403 Forbidden - PUT https://registry.npmjs.org/large-screen - You do not have permission to publish "large-screen". Are you logged in as the correct user?

package.json中的name已经存在NPM平台存在

package.json中name修改另一个名字

发布之后,在项目中无法使用

没有在package.json中配置组件入口文件(js/css)

package.json中增加编译后的文件引入

"main":"dist/large-screen-dashboard-es.js"

"style": "dist/style.css",

发布时,把src等文件都发布了(期望只发布编译后的dist文件夹中的内容)

未在package.json中配置files属性

在package.json中增加"files": ["dist"]

        

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/778844
推荐阅读
相关标签
  

闽ICP备14008679号