基于vue构建lib + 类型声明文件

2023-11-05

构建lib

通过创建一个vue项目,实现自己的组件或工具类。然后创建一个index.ts作为导出的入口文件,接下来就可以通过Vue CLIkais构建自己的lib了。

index.ts

export {Fns} from './utils/fn';

 创建了导出文件后,在package.json配置构建命令:

--name [name]构建的lib名称;--entry [entry]构建的入口文件(可省略--entry直接写入口文件路径);--dest [path]构建文件地址(不指定默认构建到dist目录)。

"scripts": {
    "serve": "vue-cli-service serve",
    "lint": "eslint --ext .ts,.vue packages/",
    "build": "vue-cli-service build --target lib --name index --entry packages/index.ts --dest statics"
  },

 运行npm run build,等构建完毕就可以了引用自己的lib了。

在package.json中配置lib的入口文件:"main": "./statisc/index.umd.min.js"。

{
  "name": "@shared/web-frontend-vue",
  "version": "1.0.0",
  "private": false,
  "main": "./statisc/index.umd.min.js",
  "scripts": {
    "serve": "vue-cli-service serve",
    "lint": "eslint --ext .ts,.vue packages/",
    "build": "vue-cli-service build --target lib --name index --entry packages/index.ts --dest statics"
  },
}

构建本地npm包:运行npm pack生成npm包

在项目中安装包:复制本地npm包的路径,执行npm i + 复制的路径。

npm i D:\code\Shared\shared-web-frontend-vue-1.0.0.tgz

安装成功后如下图:

 接下来就可以在项目中引用了:

import { SharedFns } from '@/Shared\shared-web-frontend-vue';

生成类型声明文件

在上面已经构建了我们自己的npm包了,但是引用我们包里面的导出方法很麻烦,因为import的时候没有提示,方法名称又记不住,还得去其它引用过的地方去复制,这样特别浪费时间。

接下来我们就介绍一个生成类型文件的插件 vue-tsc,首先先装上vue-tsc:

npm i vue-tsc -D

编写构建命令:

"dts": "vue-tsc --declaration --emitDeclarationOnly --declarationDir ./statics/types",

运行npm run dts生成类型文件如下:

 在package.json中配置类型声明入口:

"typings": "./statics/types/index.d.ts",

再次运行npm pack 去项目中引用,效果如下:

注意:类型声明需要配合Vue Language Features 插件使用。其它Vue相关插件可能导致在.ts文件中可以提示,而在.vue文件中没有类型提示,此时需要禁用一些vue/ts的相关插件

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于vue构建lib + 类型声明文件 的相关文章

随机推荐

  • java把图片url地址转为图片文件并打包压缩下载

    序言 最近做项目时遇到一个需求就是把上传到oss上的图片批量压缩下载 众所周知 上传到oss的图片返回保存的是url地址 而url是无法直接下载成图片的 所有中间需要转一下 下面是我写的一个工具类 纯java操作 不依赖第三方jar有需要的
  • C语言猜数字小游戏

    在大家小时候 肯定玩过猜数字的游戏 那么用代码形式输出的猜数字游戏 大家玩过吗 今天就跟随博主一起来实现这一个小游戏吧 1 我们要先思考的问题是 怎么样才能让计算机随机产生数字呢 这里推荐大家使用一个C语言函数的网站 Cplusplus 里
  • 史上最简单的 SpringCloud 教程

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net forezp article details 81040925 一 spring cl
  • vue 组件样式不生效问题,和如果更改组件样式

    我们现在的编程离不开组件的使用 例如 element ui avue 等 问题 组件的样式太过单一不满足开发的需求 还有的是组件有自己的样式更改但是找不到 解决 深层构造器 css 自带 gt gt gt gt gt gt name col
  • 如何在C#中从同步方法调用异步方法?

    我有一个public async void Foo 方法 我想从同步方法中调用它 到目前为止 我从MSDN文档中看到的所有内容都是通过异步方法调用异步方法 但是我的整个程序不是使用异步方法构建的 这有可能吗 这是从异步方法调用这些方法的一个
  • casperJs的安装

    自己买了vps就是爽 想装什么就装什么 就比如说casperjs 1 首先需要安装它的运行环境phantomjs 将这个git项目clone到自己的vps上 https github com ariya phantomjs 通过查看官方文档
  • Zookeeper实践(四)zookeeper的WEB客户端zkui使用

    前面几篇实践说明了zookeeper如何配置和部署 如何开发 因为大多是后台操作 对于维护和产品项目管理人员来说太抽象 下面介绍一下zookeeper的web客户端使用 一 环境准备 1 既然是客户端 必然得先有一个zookeeper服务
  • Class 09 - Data Frame和查看数据

    Class 09 Data Frame和查看数据 DataFrame tibbles head str colnames mutate 创建 Dataframe DataFrame 在我们开始做数据清洗或者检查数据是否存在偏差之前 我们需要
  • error: method does not override or implement a method from a supertype java:方法不会覆盖或实现超类型的方法

    错误 编译报错 error method does not override or implement a method from a supertype 即java 方法不会覆盖或实现超类型的方法 详细错误 解决方案 对超类进行继承即可
  • 交换两个变量的值的4种方法,你了解了吗?

    目录 一 引入第三变量 二 不引入第三变量 1 a a b b a b a a b 2 利用异或 3 巧妙运用优先级 总结 在我们的开发中 或者在我们平时的练习中 常常会遇到交换两个变量的值 那么如何交换两个变量的值呢 可能很多初学者都只知
  • 区块链四级知识考试

    区块链知识四级考试 考试时间30分钟 总分100分 请认真作答 出题人及监考老师 高志豪 请转载者注明 谢谢支持 一 单选题 每题5分 共40分 1 加密数字货币如果设置过短的确认时间会更容易导致什么出现 A 高效率 B 低效率 C 孤块
  • C/C++:C/C++在大数据时代的应用,以及C/C++程序员未来的发展路线

    目录 1 C C 在大数据时代的应用 1 1 C C 数据处理 1 2 C C 数据库 1 3 C C 图像处理和计算机视觉 1 3 1 导读 2 C C 程序员未来的发展路线 2 1 图导 1 C C 在大数据时代的应用 C C 在大数据
  • 三. go 常见数据结构实现原理之 silce

    目录 一 基础 几个小问题 1 题目一 2 题目二 3 题目三 4 数组和切片陷阱 二 Slice实现原理 切片的创建与底层结构 append 与切片的扩容 切片的值传递引用传递 切片再切片 特殊切片 切片的 Copy 总结 一 基础 为什
  • Path的Data生成归总

    Path的Data数据有三种生成方式 1 最简单的是用Expression Design 可以粘贴来自其它软件的矢量图形 导出时选择 文件 gt 导出 gt 导出属性 gt 格式 gt XAML Silverlight 画布 即可得到XAM
  • ES6中var let const三种变量(一文弄清楚)

    ES6中三种变量声明 ECMAScript 变量是松散类型的 变量可以用于保存任何类型的数据 有3个关键字可以声明变量 var const 和 let 其中 var在ECMAScript 的所有版本中都可以使用 而 const 和 let
  • 判断密码是否包含键盘连续字母

    新增内容为增加键盘列排序检测 原理 用两个与传入密码长度相等的一维数组 Row行数组 Column列数组 按密码顺序在二维键盘数组中查找每个字符 找到了则用 一维行列数组分别存放密码中每个字符的行号和列号 然后循环分析行号和列号是否满足二维
  • Alist V3 “全新版本“ 使用 安装/启动 教程!

    Introduction AList文档 nn ci 如果安装了Docker 请确保将其添加到系统的PATH变量中 您可以通过在终端中运行命令echo PATH来检查这一点 输出应该包括码头工人二进制文件的路径 通常是 usr bin 码头
  • RuntimeError: Pin memory thread exited unexpectedly 或 OSError: [Errno 9] Bad file descriptor 的解决方法

    遇到这几个错 大多是因为内存不足 我的解决方法 方案一 pin memory 不变 pin memory的值仍然为True 不需要改为False 而是把batch size 和 num worker的值分别调成 batch size 2 n
  • 10-20-010-简介-目录-Kylin目录详解

    文章目录 1 视界 1 Kylin二进制源码目录解析 2 HDFS 目录结构 2 1 cardinality 2 2 coprocessor 2 3 kylin job id 2 4 resources 2 5 jdbc resources
  • 基于vue构建lib + 类型声明文件

    构建lib 通过创建一个vue项目 实现自己的组件或工具类 然后创建一个index ts作为导出的入口文件 接下来就可以通过Vue CLIkais构建自己的lib了 index ts export Fns from utils fn 创建了