教程:基于Verdaccio搭建一个私有化 Npm 库, 并上传本地Vue组件库

本文主要是介绍教程:基于Verdaccio搭建一个私有化 Npm 库, 并上传本地Vue组件库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

教程:基于Verdaccio搭建一个私有化 Npm 库, 并上传本地Vue组件库

开发环境:
1、Node.js (v12.18.3)
2、Vue CLI (v4.5.12)
3、Verdaccio (v4.12.0)

一、创建Vue项目

可以自行使用vue CLI (3.x以上)或其他IDE来创建新的vue 3项目。

1、安装vue cli。

  使用命令行安装: npm install -g @vue/cli

   (注意:先把npm的源设置为淘宝源)

2、创建vue项目。

  (1)使用vscode打开一个空的文件夹。

  (2)在终端输入:vue create my-app

     选择默认 vue2 并敲击回车(vue 3也可以)


在这里插入图片描述

在这里插入图片描述

3、运行。

  (1)在终端输入:cd my-app
  (2)在终端输入:yarn serve

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

二、搭建私有化 Npm 库

1、安装verdaccio

  在终端输入: npm install -g verdaccio

2、运行

  在终端输入: verdaccio

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

三、上传组件库

1、修改vue项目的包结构

   将src文件夹重命名为examples(存放测试用例).
   在项目根目录下新建packages(存放组件库代码)

在这里插入图片描述

2、修改vue.config.js文件

   在项目根目录下新建一个vue.config.js文件,内容如下:

// vue.config.js
const path = require('path')
function resolve (dir) {return path.join(__dirname, dir)
}module.exports = {// 修改 入口文件夹为 pagespages: {index: {entry: 'examples/main.js',template: 'public/index.html',filename: 'index.html'}},chainWebpack: config => {// 设置文件夹别名config.resolve.alias.set('@', resolve('./examples'))  // 注意路径不能为 __dirname + './example'这种形式.set('~', resolve('./packages'))// 设置编译规则config.module.rule('js').include.add(resolve('./packages')).end().use('babel').loader('babel-loader').tap(option => option)}}

3、组件库示例代码

   (1)在 /packages 下创建:baseInput文件夹、index.js。
   (2)在 /packages/baseInput 下创建:src文件夹、index.js。
   (3)在 /packages/baseInput/src 下创建:baseInput.vue。
在这里插入图片描述

  (4)代码如下:
----> /packages/baseInput/src/baseInput.vue

<template><div>baseInput: <input v-model="msg"/></div>
</template>
<script>
export default {name: 'baseInput',data () {return {msg: 'i am a component.'}}
}
</script>

----> /packages/baseInput/index.js

import baseInput from './src/baseInput.vue'baseInput.install = function(Vue) {Vue.component(baseInput.name, baseInput)
}
export default baseInput

----> /packages/index.js

import baseInput from './baseInput'const install = function (Vue) {if (install.installed) return// 注册组件Vue.use(baseInput)install.installed = true
}export default {install,baseInput
}

4、测试组件

   (1)在/examples/main.js文件中注册组件:

// /example/main.js
import baseInput from '~'
Vue.use(baseInput)

   (2)在/examples/App.vue文件中使用组件:<baseInput></baseInput>
      启动项目,如果页面出现输入框,则表示组件使用正常。

5、修改package.json

   version 改为 0.1.1
   private 改为 true
   main 设置为 packages/index.js(这是外界引入的入口)

{"name": "my-app","version": "0.1.1",			// 版本号改为: '0.1.1'"private": false,				// 改为 false"main": "packages/index.js",	// 外界引入文件入口设为 packages/index.js...
}

6、上传到私有npm库

   (1)终端输入:npm adduser --registry http://localhost:4873

   按照提示输入完毕。

   (2)终端输入:npm publish --registry http://localhost:4873

在这里插入图片描述

四、测试组件库

1、yarn安装

   终端输入:yarn add my-app --registry http://localhost:4873

2、测试组件

   修改example/main.js文件:

// example/main.js
// - import baseInput from '~'
+ import baseInput from 'my-app'
Vue.use(baseInput)

   启动项目。出现输入框。成功!

在这里插入图片描述

这篇关于教程:基于Verdaccio搭建一个私有化 Npm 库, 并上传本地Vue组件库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/601267

相关文章

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Maven如何手动安装依赖到本地仓库

《Maven如何手动安装依赖到本地仓库》:本文主要介绍Maven如何手动安装依赖到本地仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载依赖二、安装 JAR 文件到本地仓库三、验证安装四、在项目中使用该依赖1、注意事项2、额外提示总结一、下载依赖登

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

HTML5中的Microdata与历史记录管理详解

《HTML5中的Microdata与历史记录管理详解》Microdata作为HTML5新增的一个特性,它允许开发者在HTML文档中添加更多的语义信息,以便于搜索引擎和浏览器更好地理解页面内容,本文将探... 目录html5中的Mijscrodata与历史记录管理背景简介html5中的Microdata使用M

html5的响应式布局的方法示例详解

《html5的响应式布局的方法示例详解》:本文主要介绍了HTML5中使用媒体查询和Flexbox进行响应式布局的方法,简要介绍了CSSGrid布局的基础知识和如何实现自动换行的网格布局,详细内容请阅读本文,希望能对你有所帮助... 一 使用媒体查询响应式布局        使用的参数@media这是常用的

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n