当前位置: 首页 > java >正文

支持TypeScript并打包为ESM/CommonJS/UMD三种格式的脚手架项目

支持TypeScript并打包为ESM、CommonJS和UMD三种格式的脚手架项目

码云地址

NODE 版本要求

node v16.17.1
npm 8.15.0

设置淘宝镜像
npm set registry https://registry.npmjs.org/
cnpm set registry https://registry.npmjs.org/
安装依赖
npm install
打包
npm run build
脚手架介绍

支持TypeScript并打包为ESM、CommonJS和UMD三种格式的脚手架项目

脚手架解决方案概述
  • Rollup - 高效的JavaScript打包工具
  • TypeScript - 支持类型安全的开发
  • Terser - 代码压缩工具
  • ESLint & Prettier - 代码质量和风格统一
项目结构
dist/index.esm.js      # ES模块格式index.js          # CommonJS格式index.umd.js      # UMD格式
src/index.ts          # 主入口文件
.eslintrc           # ESLint配置
.gitignore          # Git忽略规则
.prettierrc         # Prettier配置
package.json        # 项目配置
rollup.config.js    # Rollup配置文件
tsconfig.json       # TypeScript配置
.eslintrc文件
{"root": true,"parser": "@typescript-eslint/parser","plugins": ["@typescript-eslint"],"extends": ["eslint:recommended","plugin:@typescript-eslint/recommended","plugin:prettier/recommended"],"rules": {"@typescript-eslint/no-unused-vars": "warn","@typescript-eslint/explicit-module-boundary-types": "off"}}
.gitignore 文件
node_modules
dist
*.log
.DS_Store
.prettierrc 文件
{"semi": true,"singleQuote": true,"tabWidth": 2,"trailingComma": "all","printWidth": 100,"arrowParens": "always"
}
package.json文件
{"name": "ts-multi-format-bundler","version": "1.0.0","description": "TypeScript multi-format bundler","main": "dist/index.js","module": "dist/index.esm.js","browser": "dist/index.umd.js","types": "dist/index.d.ts","type": "module","scripts": {"build": "rollup -c","watch": "rollup -c -w","lint": "eslint src --ext .ts","format": "prettier --write \"src/**/*.ts\""},"devDependencies": {"@rollup/plugin-commonjs": "^25.0.4","@rollup/plugin-node-resolve": "^15.2.1","@rollup/plugin-typescript": "^11.1.2","@typescript-eslint/eslint-plugin": "^6.3.0","@typescript-eslint/parser": "^6.3.0","eslint": "^8.46.0","eslint-config-prettier": "^9.0.0","eslint-plugin-prettier": "^5.0.0","prettier": "^3.0.0","rollup": "^3.28.0","rollup-plugin-dts": "^6.1.0","rollup-plugin-terser": "^7.0.2","tslib": "^2.6.2","typescript": "^5.1.6"},"keywords": ["typescript","rollup","esm","cjs","umd"]
}
rollup.config.js 文件
import typescript from '@rollup/plugin-typescript';
import { nodeResolve } from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import { terser } from 'rollup-plugin-terser';
import dts from 'rollup-plugin-dts';const production = !process.env.ROLLUP_WATCH;export default [// 主构建配置{input: 'src/index.ts',output: [{file: 'dist/index.esm.js',format: 'esm',sourcemap: !production},{file: 'dist/index.js',format: 'cjs',sourcemap: !production},{file: 'dist/index.umd.js',format: 'umd',name: 'MyLibrary',sourcemap: !production}],plugins: [nodeResolve(),commonjs(),typescript({tsconfig: './tsconfig.json',exclude: ['**/__tests__/**']}),production && terser()]},// 类型声明文件生成{input: 'src/index.ts',output: {file: 'dist/index.d.ts',format: 'es'},plugins: [dts()]}
];
tsconfig.json文件
{"compilerOptions": {"target": "es6","module": "esnext","declaration": true,"declarationMap": true,"sourceMap": true,"strict": true,"esModuleInterop": true,"skipLibCheck": true,"forceConsistentCasingInFileNames": true,"moduleResolution": "node","outDir": "dist","rootDir": "src"},"include": ["src/**/*.ts"],"exclude": ["node_modules", "dist"]}
http://www.xdnf.cn/news/10832.html

相关文章:

  • MYSQL索引详解及索引优化、分析
  • Cyber Weekly #58
  • 低成本单节电池风扇解决方案WD8001
  • switch-while day6
  • Spring AOP(1)
  • 小家电外贸出口新利器:WD8001低成本风扇智能控制方案全解析
  • 模块化交互数字人系统:OpenAvatarChat,单台PC即可运行完整功能
  • sourcetree中的mercurial有什么用
  • Python实例题:Flask实现简单聊天室
  • 【PCB设计】STM32开发板——原理图设计(电源部分)
  • FLgo学习
  • leetcode46.全排列:回溯算法中元素利用的核心逻辑
  • MyBatis 一级缓存与二级缓存
  • 【Python进阶】装饰器
  • 基于白鲸优化算法的路径优化研究
  • 数字化赋能智能托育实训室课程体系
  • 工业透明材料应力缺陷难检测?OAS 软件应力双折射案例来解决
  • ADK实战-基于ollama+qwen3实现外部工具串行调用
  • 帝可得 - 运营管理APP
  • MMAD论文精读
  • day20 奇异值SVD分解
  • 线程池和数据库连接池的区别
  • 3-10单元格行、列号获取(实例:表格选与维度转换)学习笔记
  • 163MusicLyrics(歌词下载工具) v7.0
  • MDP的observations部分
  • MS9288C+MS2131 1080P@60Hz USB3.0环出采集
  • 常见的七种排序算法 ——直接插入排序
  • 个人博客系统自动化测试报告
  • 最佳实践 | 璞华易研“PLM+AI智能研发平台”,助力汉旸科技实现高新材料“数据驱动研发”
  • 95. Java 数字和字符串 - 操作字符串的其他方法