使用vite实现TS库

1,409 阅读1分钟

初始化项目

yarn create vite
# 输入项目名
# 选择Others
# 选择create-vite-extra
# 选择TypeScript

目录介绍

viet-demo
    │  .gitignore
    │  index.d.ts          TS类型声明文件
    │  index.html          yarn dev的时候运行的前端页面
    │  package.json
    │  tsconfig.json
    │  vite.config.ts
    │
    ├─lib                  这里编写TS库代码
    │      main.ts
    │
    ├─public
    │      vite.svg
    │
    └─src                  index.html测试页面使用的代码
            main.ts
            style.css
            typescript.svg
            vite-env.d.ts

vite.config.ts

export default defineConfig({
    build: {
        lib: {
            entry: './lib/main.ts', // TS库入口文件
            name: 'Counter', // 挂载到全局的变量名,CDN导入的时候可以直接使用Counter变量
            fileName: 'counter', // 输出的文件名
        },
    },
});

package.json

  • name: 包的名称,必须唯一
  • version: 版本号,每次上传的版本号必须大于已经上传过的版本
  • private: 是否为私有,npmjs对于私有包时收费的
  • author: 配置作者名称
  • keywords: 数组 ; 关键词,利于搜索
  • repository:npmjs.com将会显示关联的github仓库
  • files: 上传的文件
  • main:npm包入口文件,commonjs规范
  • module:npm包入口文件,es规范
  • types: npm包类型声明文件
{
    "name": "demo",
    "version": "1.0.0",
    "description": "描述信息",
    "private": false,
    "keywords": ["tag1", "tag2"],
    "repository": {
        "type": "git",
        "url": "仓库地址",
    },
}

README.MD

读我文件,用于展示说明TS库的使用

声明文件

vite默认不会生成声明文件,但是,根目录的index.d.ts文件就是作为npm包的声明文件使用。

如果不想手写的话,可以试试vite-plugin-dts

/// vite.config.ts
import { defineConfig } from 'vite';
import dts from 'vite-plugin-dts';

export default defineConfig({
    // ...
    plugins: [
        dts({
            outputDir: './dist',
            include: ['./lib'],
        }),
    ]
});

``

## 拷贝文件

发布的时候,如果有拷贝静态资源文件的需求

```shell
yarn add --dev rollup-plugin-copy
import { defineConfig } from 'vite';
import copy from 'rollup-plugin-copy';

export default defineConfig({
    build: {
        // ...
        emptyOutDir: false, // 默认为true,这将导致拷贝过来的文件被删除
    },
    plugins: [
        copy({
            verbose: true,
            targets: [
                {
                    src: './lib/xxx',
                    dest: './dist',
                }
            ]
        }),
    ]
});

发布

npm run build
npm publish