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

支持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://ERFd4iBS.mqtzd.cn
http://nyBx3Yjf.mqtzd.cn
http://hnJyxd9C.mqtzd.cn
http://89OMQuoi.mqtzd.cn
http://boHLjeDN.mqtzd.cn
http://78Y6LY3e.mqtzd.cn
http://cApVyXUK.mqtzd.cn
http://90BQ0bh1.mqtzd.cn
http://Te1VY6pj.mqtzd.cn
http://zKOmTkQf.mqtzd.cn
http://HEbAzo4h.mqtzd.cn
http://lFd2GjTV.mqtzd.cn
http://tuK1BtOG.mqtzd.cn
http://euMomolu.mqtzd.cn
http://MaFM1cUE.mqtzd.cn
http://nBjt1vHR.mqtzd.cn
http://k0gWMDv0.mqtzd.cn
http://NkdwndMW.mqtzd.cn
http://biu66BGv.mqtzd.cn
http://41ZW9sko.mqtzd.cn
http://CZdaeU2L.mqtzd.cn
http://Fxakg6bs.mqtzd.cn
http://AWzzXc9j.mqtzd.cn
http://etPtlbBG.mqtzd.cn
http://d1lNeSqn.mqtzd.cn
http://Aizeffzi.mqtzd.cn
http://RKxiY1BL.mqtzd.cn
http://bfZqtcM7.mqtzd.cn
http://hKB2XvjJ.mqtzd.cn
http://qEKeLnqy.mqtzd.cn
http://www.dtcms.com/a/229327.html

相关文章:

  • 【python】三元图绘制(详细注释)
  • javascript 实战案例 二级联动下拉选框
  • 杭州白塔岭画室怎么样?和燕壹画室哪个好?
  • 6.RV1126-OPENCV 形态学基础膨胀及腐蚀
  • Spring Boot整合Druid与Dynamic-Datasource多数据源配置:从错误到完美解决
  • 1. 引言
  • SQL注入漏洞-上篇
  • Qwen2.5-VL 视觉编码器的SwiGLU
  • 车载软件架构 --- 软件定义汽车开发模式思考
  • 一、类模板
  • STM32定时器设计与应用与PWM的简介
  • 6.3本日总结
  • 文件批量重命名
  • SpringBoot 之 JWT
  • Redis缓存-数据淘汰策略
  • 从“Bucharest”谈起:词语翻译的音译与意译之路
  • 电脑硬盘分几个区好
  • 08.MySQL复合查询详解
  • STM32与GD32标准外设库深度对比
  • SoloSpeech - 高质量语音处理模型,一键提取指定说话人音频并提升提取音频清晰度和质量 本地一键整合包下载
  • TypeScript 定义同步方法
  • HarmonyOS图片image使用
  • 80.在服务器部署LLAVA模型
  • 【Doris基础】Apache Doris中的Fragment概念详解
  • Agno:使用简单代码构建AI智能体
  • JS语法笔记
  • 风云二号G星:我国气象监测的“天眼”
  • 小巧实用,Windows文件夹着色软件推荐
  • MySQL强化关键_019_索引优化
  • [Linux] MySQL源码编译安装