如何将vue项目制作成组件并发布到npm仓库中

前言

vue作为当前前端主流框架,帮我们简化封装的同时还可以将我们自己的小项目发布的npm中央仓库,这是如果有人要使用我们的代码,我们不必在提供自己的项目源码,可以直接让使用者去npm仓库直接下载我们的项目,下面我们就来去实现以下自己的项目发布到npm吧

vue项目初始化

js 复制代码
vue create fcsummer-translate(自己的项目名称)

编写组件

  1. 首先在src中新建package目录

这是我起的组件名 2. 编写组件

发布项目

  1. 在package根目录下创建index.js
js 复制代码
//package/index.js
import FTranslate from "../package/f-translate/index.vue"; // 引入封装好的组件
const array = [FTranslate]; // 将来如果有其它组件,都可以写到这个数组里

// 批量组件注册
const install = function (Vue) {
    array.forEach((com) => {
        Vue.component(com.name, com);
    });
};

export default install; // 这个方法以后再使用的时候可以被use调用

这里的install方法是在以后我们使用npm i下载我们的组件后在main.js中引用

js 复制代码
import fTranslate from 'fcsummer-translate'
import '../node_modules/fcsummer-translate/fcsummer-translate.css'
Vue.use(fTranslate) //默认调用上述install方法,让vue去注册我们写的组件
  1. 组件打包 修改package.json文件
js 复制代码
"scripts": {
  "serve": "vue-cli-service serve",
  "build": "vue-cli-service build",
  "lint": "vue-cli-service lint",
  "package": "vue-cli-service build --target lib ./src/package/index.js --name fcsummer-translate --dest fcsummer-translate"
},
  • --target lib 关键字 指定打包的目录
  • --name 打包后的文件名字
  • --dest 打包后的文件夹的名称

执行命令

arduino 复制代码
npm run package

在命令执行完后我们可以在根目录找到fcsummer-transalte目录

发布npm仓库

切换到新生成的目录

bash 复制代码
cd fcsummer-translate

执行命令

csharp 复制代码
npm init -y

初始化项目,还可以执行

csharp 复制代码
npm init

执行后会逐一让你输入要发布的npm包名字,npm包的描述信息和npm包的作者

在package.json中我们填好描述信息

至此,本地工作基本完成

正式发布

  1. 注册账号 npm官网
  2. 设置npm源(可选可不选)
arduino 复制代码
npm config set registry=https://registry.npmjs.org
  1. 添加npm账户

    npm adduser

需要填写你在npm官网注册的用户名和密码,只需要一次本地npm记住后以后就可以不用了 4. 发布npm

复制代码
npm publish

如果在这报错,基本上原因就是你的npm包已经被别人占用了,重新编写一个就可以

下载引用

  1. 下载组件
css 复制代码
npm i fcsummer-translate
  1. main.js中引用,这里一定要把css也引用上
javascript 复制代码
import fTranslate from 'fcsummer-translate'
import '../node_modules/fcsummer-translate/fcsummer-translate.css'
Vue.use(fTranslate)

3.使用

xml 复制代码
<template>
  <div id="app">
  《fTranslate/>
  </div>
</template>

注意事项

在打包的时候我们最好--name和--dest相同,不然引用的时候会有找不到包的情况,如果名字重复,删除打包后的文件夹,重新打包

我的项目

fbk111/fcsummer-translate: 提供中文生成拼音注释 (github.com)

  1. 引用组件
  1. 传入content和fontSize
  2. 页面展示(我这里是写死的300px)
  1. 项目存在bug,希望前端大佬可以积极参与
  2. 已发布到npm
相关推荐
库拉镜像AI牛牛34 分钟前
短剧内容自动化生产:知漫剧工作室落地教程
大数据·服务器·前端·人工智能·语音识别
律宏阔35 分钟前
Flutter 列表图片内存优化:CachedNetworkImage 与 ClipRRect 的取舍
前端·flutter
行者全栈架构师36 分钟前
【鸿蒙心迹】相册文搜图工程化落地:HarmonyOS 7.0 端侧 AI 检索全链路实战与 5 个踩坑解法
前端
律宏阔1 小时前
Dart 3 Record:解决 Future.wait 异构返回值的类型问题
前端·flutter
Seraphina361 小时前
DVWA(XSS Reflected/Stored High,CSRF Low)
前端·xss·csrf
默_笙2 小时前
🍔 中间件不只是打日志:四个钩子、一次短路,和自带的工具
前端·javascript
程序员老赵3 小时前
Docker 部署 Dolibarr:轻松搭建开源 ERP/CRM 平台
运维·前端·后端
星禾元亨3 小时前
同一件事有三份资料,AI 该信哪一份?冲突判定、优先级链与处置流程
前端·人工智能
Dovis(誓平步青云)3 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
穆梓兰煊3 小时前
TS5.7 vs 裸JS:AI应用少3坑
前端