Skip to content

A starter for TypeScript monorepo libraries with integrated build, development build, automated testing, release workflows, and code quality tooling.

Notifications You must be signed in to change notification settings

yinhunfeixue/ts-mono-starter

Repository files navigation

ts-mono-starter

English | 简体中文

概述

一个用于 TypeScript Monorepo 多包库项目 的脚手架, 集成:构建、开发构建、自动化测试、发版、代码规范能力

功能

命令

功能 命令
构建 npm run build
开发模式 npm run dev
测试 npm run test
代码检查 npm run lint
依赖检查 npm run depcheck
清理 npm run clean
设置版本 npm run version
添加子包 npm run newlib
发beta版 npm run beta

目录结构

脚手架

test        # 自动化测试项目
scripts     # 打包脚本和配置
packages    # 子包

src     # 源码目录
assets  # 静态文件

自动化测试

编写测试代码

  1. 创建测试文件: src/index.test.ts

  2. 引入子包:pnpm add ../packages/mylib

  3. 编写测试代码

    import { fn } from 'mylib';
    
    describe('mylib index', () => {
      it('should be defined', () => {
        fn();
        expect(true).toBe(true);
      });
    });
  4. 运行测试:npm run test

    测试会运行两次,esmodule、commonjs

建议所有子包的自动化测试都在此项目编写

原则

  1. 测试代码和最终使用的代码完全一致, 示例

    import a from 'libname'  
    
    import a from '../src/**' 
  2. 支持import库中的任一代码文件

    import lib from 'libname/utils/a.ts';
  3. 运行产物,而非源码。 npm run test 会执行两次测试: commonjs、esmodule

打包配置

项目使用 tsdown 打包, 修改对应的配置即可

  • 全局配置: scripts/tsdownConfig.ts
  • 单个项目配置:packages/*/tsdown.config.ts

其它

  1. 格式化:保存文件、commit时,会使用prettier格式化
  2. 兼容性:处理的兼容如下
    1. polyfill
    2. commonjs、esmodule差异,示例import.meta.dirname

About

A starter for TypeScript monorepo libraries with integrated build, development build, automated testing, release workflows, and code quality tooling.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published