如何创建自己的npm包,并进行本地验证

如何创建自己的npm包,并进行本地验证

前言

在我们日常的开发过程中,我们会对一个项目中需要重复用到的代码进行封装,那么对于通用的工具库,我们通常会封装成一个npm packpage以达到在不同项目中复用的目的。下面的内容将会介绍:

  1. 如何封装属于我们自己的npm包
  2. 打包过后的代码如何在本地其他项目里面实时验证
  3. 如何解决项目不通过npm包安装库,而是直接下载代码到项目中,出现的类型检测报错问题
  4. 最终的目录结构以及完整的关键配置文件

初始化项目

  1. 创建一个文件夹,并将文件夹的名字修改为你的npm库名(文件夹名字和库名一致此处以test为例)
  2. 在vscode中打开该文件夹,如何在vscode的控制台里面执行下面的代码,初始化package.json
npm init -y
  1. 安装vite为开发依赖(此案例安装的vite版本为5.4.11,最新的6.0版本会有问题,具体原因未排查)
npm i vite -D
// 安装指定版本
npm i vite@5.4.11 -D
  1. 根目录下创建一个src文件夹,在src文件夹里创建一个ts文件,文件内容如下(此处以test.ts为例,文件内容仅作为演示,可以随意书写)
export class buildExample{
   
   
    constructor(){
   
   
    }
    add(x: number, y: number): number {
   
   
        return x + y;
    }
    sub(x: number, y: number): number {
   
   
        return x - y;
    }
}
  1. 在根目录下创建vite.config.js,配置内容如下
 import {
   
    resolve } from 'path'
import {
   
    defineConfig } from 'vite'

// vite默认会打包出umd和es模块化两种导出方式的文件,以下配置会打包出两份结果:
export default defineConfig({
   
   
  build: {
   
   
    lib: {
   
   
      entry: resolve(__dirname, './src/test.ts'),
      name: 'test',
      // 构建好的文件名(不包括文件后缀)
      fileName: 'test',
    },
    rollupOptions: {
   
   
      output: {
   
   
        // 在 UMD 构建模式下,全局模式下为这些外部化的依赖提供一个全局变量
        globals: {
   
   
            test: 'test',
        },
      },
    },
  },
})

打包代码

  • 在package.json的scripe里面添加指令
  "scripts": {
   
   
    "build": "vite build"
  },
  • 在控制台执行指令,打包代码。
npm run build

3.执行以上命令后,构建结果会输出到dist目录,默认有两个js文件,功能一致,语法规范不一致

  • .umd.js:umd导出方式,兼容amd commenjs等导出的库实现。
  • .mjs:es模块化导出方式的库实现。

自动生成dts声明文件

配置好vite.config.js后,就可以构建了。但是如果是使用ts开发库,则需要配置自动生成dts声明文件。下面我们使用vite插件,执行vite命令时,会一并生成声明文件。如vite-plugin-dts插件。

  • 首先安装插件 ,由于我们只是开发过程中需要用到这个插件,所以加上-D
npm i vite-plugin-dts -D
  • 修改vite.config.js,在vite中引入该插件,并注册
// vite.config.js
import dts from 'vite-plugin-dts'export default defineConfig({
   
   
 // ...其它配置
 plugins: [dts()],
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值