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

支持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.lryc.cn/news/2397917.html

相关文章:

  • 【云原生开发】如何通过client-go来操作K8S集群
  • 八.MySQL复合查询
  • cacti导出的1分钟监控数据csv文件读取并按5分钟求平均值,然后计算95计费值,假设31天的月份
  • FastMCP vs MCP:协议标准与实现框架的协同
  • AI视频“入驻”手机,多模态成智能终端的新战场
  • nginx+tomcat负载均衡群集
  • DEEPSEEK帮写的STM32消息流函数,直接可用.已经测试
  • day45 python预训练模型
  • 二维 根据矩阵变换计算缩放比例
  • Vue-Cropper:全面掌握图片裁剪组件
  • 建造者模式:优雅构建复杂对象
  • 现场总线结构在楼宇自控系统中的技术要求与实施要点分析
  • Axure组件即拖即用:垂直折叠菜单(动态展开/收回交互)
  • 学习路之PHP--easyswoole使用视图和模板
  • 《云原生安全攻防》-- K8s网络策略:通过NetworkPolicy实现微隔离
  • 06 APP 自动化- H5 元素定位
  • Axure疑难杂症:中继器新增数据时如何上传并存储图片(玩转中继器)
  • 定时线程池失效问题引发的思考
  • Vue-ref 与 props
  • AXURE安装+汉化-Windows
  • ArcGIS Pro字段计算器与计算几何不可用,显示灰色
  • mac电脑安装 nvm 报错如何解决
  • 第11节 Node.js 模块系统
  • 上海工作机会:Technical Writer Senior Technical Writer - 中微半导体设备
  • String 学习总结
  • Python微积分可视化:从导数到积分的交互式教学工具
  • Juce实现Table自定义
  • 【25.06】fabric进行caliper测试加环境部署
  • 【后端高阶面经:架构篇】51、搜索引擎架构与排序算法:面试关键知识点全解析
  • Windows应用-音视频捕获