All Tags
On this page

使用vite、tsup、github actions打造丝滑的npm package开发模版

#react #vue #vite #npm
avatar
jerrywu001
创建时间:2023-09-04 08:06:39

很多时候我们有开发npm pacckge的想法,但自己搭建开发模版会觉得很麻烦!所以,我有了搭建零配置npm package开发模版的想法,真的是零配置哦🎉,你要做的只是:

  1. Fork [my project]
  2. 初始化GitHub action必须的token
  3. 在src文件夹中编写您的逻辑
  4. Push or PR,Github action会自动发包,并部署storybook文档

项目地址:

For React

For Vue3

大致介绍

npm package开发模版所包含的技术点:

  • 🛹 项目使用vite3.0搭建, 支持typescript

  • 🧩 发布的npm package支持cjs/esm

  • 🎯 使用github actions实现自动化 ci、deploy to netlify、npm publish、create-release

  • 🛫 使用tsup(npm run build)去构建npm package

    同时也集成了vite构建方案 --> npm run build:vite

    输出路径: dist/index.js & dist/esm/index.js & dist/index.d.ts

  • 🏗 内置了开发调试环境(可直接引用src中的代码,方便调试)

    对应文件夹为playground ---> npm run dev

  • 💡 支持browserslistrc配置

  • 🔌 使用postcss (postcss-nested/ autoprefixer / cssnano)构建样式

    对应文件夹为playground ---> npm run build:css

    入口文件位置: src/styles/index.css

    输出路径: dist/index.css

  • 🖼 集成stylelint

  • 💊 集成eslint

  • 🎉 集成单元测试(vitest

  • 🛎 使用原生npm实现mono repo

  • 🧌 集成storybook

  • 🐳 集成Husky & lint-staged

  • 🍥 集成commitlint, 规范提交信息

  • vue>=3.2.0,react>=16.8.0

  • 🪜 vue版本默认集成了vitepress

    docs文件夹

项目结构

Project
├── __tests__           # 单元测试脚本
├── babel.config.js     # babel config
├── package.json
├── playground          # dev environment folder (通过包名可以直接引用src中的源码,方便开发调试)
│   ├── index.html
│   ├── package.json
│   ├── public
│   ├── src
│   ├── tsconfig.json
│   ├── vite-env.d.ts
│   └── vite.config.ts
├── postcss.config.js  # 使用postcss构建css
├── src                # npm包源码位置
│   ├── index.ts       # npm包源码入口文件
│   ├── stories        # storybook for building UI components and pages
│   ├── styles         # npm包对应的样式源文件(可选)
│   └── types.ts       # ts类型申明
├── tsconfig.json      # ts config
└── tsup.config.ts     # 默认使用tsup构建package(也可选择npm run build:vite)

如何使用

替换包名称

全局搜索项目,将'custom-package-name'替换为你的npm package名称

初始化github action需要的token

具体步骤,请参照: create token

关于github actions

正常push或pr即可触发action

当有PR被创建、修改、reopen、commit时,会触发ci work,用于执行eslint、stylelint、typecheck、unit test

效果如下图:

当有代码被push 或 PR被创建、修改、reopen、commit时,会触发deploy work,用于执行上一步ci,并在ci成功时自动deploy storybook到netlify、vercel上

效果如下图:

当tag被添加(npm run release),会触发release work,用于执行上一步ci,并在ci成功时自动发布npm package、create release

效果如下图:

关于模版细节,后续将出文章详细一一介绍