@bga-note/lib-ts-vite
TypeScript icon, indicating that this package has built-in type declarations

0.0.10 • Public • Published

学习使用 vite 发布 ts 库

package.json 说明

https://nodejs.cn/api/packages.html

  • main 和 module:定义入口文件,项目在具备 ESM 规范情况下,module 具备更高的识别优先级
  • publishConfig:在 publish 时,里面对应的入口会替换掉外层,一般本地开发时指向 src 目录,发布后指向 dist 目录
  • types:组件的 TypeScript 类型描述,缺失会导致组件被引用时失去类型提示
  • files:组件作为依赖项时会安装的目录/文件,支持正则匹配,默认会带上 4 项:package.json、README、LICENSE / LICENCE 和 主入口文件

hmr 失效

  • 问题:在 package.json 中配置 exports 后 hmr 失效
"exports": {
  ".": {
    "types": "./dist/src/index.d.ts",
    "import": "./dist/index.es.js",
    "require": "./dist/index.umd.js"
  },
  "./package.json": "./package.json"
},
  • 解决方案:将 exports 里的配置改到 publishConfig 中
"publishConfig": {
  "registry": "https://registry.npmjs.org/",
  "access": "public",
  "main": "dist/index.umd.js",
  "module": "dist/index.es.js",
  "types": "dist/index.d.ts"
},

发布时多上传 xxx.ts 文件问题

  • 问题:为了方便开发时 hmr 生效以及有类型公式,在 package.json 最外层配置了 main 执行 xxx.ts,导致发布时会把 xxx.ts 文件也发布到 npm 仓库
"main": "src/index.ts",
  • 解决方案:将 main 配置删掉,改为配置 module 和 types
"module": "src/index.ts", // hmr 生效
"types": "src/index.ts", // 开发期间有类型提示

生成类型声明文件

  • 方式 1:自己配置 tsconfig 来生成

    • 创建 tsconfig.node.json 来生成类型文件

      {
        "extends": "./tsconfig.json", // 拓展 tsconfig.json 的配置
        "compilerOptions": {
          "noEmit": false, // 允许生成文件
          "declaration": true, // 需要设置为 true 来支持类型
          "emitDeclarationOnly": true, // 只生成类型文件
          "declarationDir": "dist" // 类型文件的导出目录
        },
        "include": ["src"] // 编译目标仅为 src 文件夹下的文件
      }
    • 修改 package.json 的 build 命令,在末尾追加 && tsc --p tsconfig.build.json

      "build": "tsc && vite build && tsc --p tsconfig.build.json",
  • 方式 2:使用 vite-plugin-dts 插件

    • 添加依赖

      pnpm add vite-plugin-dts -D
    • 配置 vite.config.ts

      plugins: [
        dts({
          entryRoot: 'src', // 这里指定下 entryRoot 为 src,避免 monorepo 场景下生成的 .d.ts 目录混乱
        }),
      ]

发布

  • 登录指定 npm 服务器
pnpm login --registry https://registry.npmjs.org/
  • 查看当前登录用户
pnpm whoami --registry https://registry.npmjs.org/
  • 在 package.json 中通过 publishConfig.registry 指定要发布的 npm 服务器地址;通过 publishConfig.access 指定访问权限为 public,否则会发布失败
"publishConfig": {
    "registry": "https://registry.npmjs.org/",
    "access": "public"
}
  • 或者在 .npmrc 中配置以下内容
registry=https://registry.npmjs.org/
access=public
  • 构建
pnpm build
  • 发布前检查
pnpm publish --dry-run
  • 发布
pnpm publish

Readme

Keywords

Package Sidebar

Install

npm i @bga-note/lib-ts-vite

Weekly Downloads

0

Version

0.0.10

License

MIT

Unpacked Size

9.49 kB

Total Files

8

Last publish

Collaborators

  • bingoogolapple