tsup打包如何更改outFileName

首先简单介绍一下,什么是tsup

tsup是一个打包工具,类似的有rollup

tsup的官网:tsup.egoist.dev/

tsup的优点:打包速度快,配置少,与ts兼容良好

安装

csharp 复制代码
npm i tsup -D
# Or Yarn
yarn add tsup --dev

配置

话不多说,来看看全部的配置

tsup打包都是index开头,本次改造的项目正好之前的rollup打包,但是rollup打包速度真的是太慢了,很影响效率,所以我就打算改成tsup

ts 复制代码
import { defineConfig, NormalizedOptions, Format } from 'tsup'

interface IOption extends NormalizedOptions {
  packName: string
  version: string
}

type Context = {
  options: IOption
  format: Format
  /** "type" field in project's package.json */
  pkgType: string
}

// eslint-disable-next-line @typescript-eslint/no-var-requires
const masterVersion = require('./package.json').version
// eslint-disable-next-line @typescript-eslint/no-var-requires
const masterName = require('./package.json').name

export default defineConfig((options) => { // The options here is derived from CLI flags.
  // console.log(options, 1234) // options就是script中是否带参数,比如 clean: true === tsup --clean
  return {
    entry: {
      index: 'src/index.ts',
    },
    outExtension({ format, options }: Context) {
      return {
        js: `.${options?.packName}.${options.version}.${format}.js`,
      }
    },
    packName: masterName,
    version: masterVersion,
    target: 'es5',
    splitting: false, // 默认情况下打包 esm 会进行代码分割,但是 cjs 并不默认支持,如果需要启用 cjs 代码分割需要加上:--splitting 参数。
    sourcemap: false, // 是否生成sourcemap文件
    injectStyle: true, // 是否注入css
    dts: true, // 打包之后是否生成.d.ts文件
    clean: true, // 再次打包是否清除上次文件
    format: ['esm', 'cjs', 'iife'],
    minify: false, // true 会压缩代码
  }
})

这是之前的打包效果

可以看到打包之后,文件名是由npm名称+版本号

默认tsup打包出来的效果如下:

我需要的效果如下:

由于NormalizedOptions这里我要新增两个属性,所以就新增了一个类型,继承于NormalizedOptions,这样就不会报ts错误了

原理也很简单,就是直接读取package.json中的数据,然后在outExtension方法中,修改输出文件名

但是输出前面还是必须要有index,不然会报错

把这个点去掉就是报错了

与rollup对比

tsup的打包速度真的很快3.2s

对比之前的rollup打包时间9.8s

相关推荐
givemeacar4 分钟前
十七:Spring Boot依赖 (2)-- spring-boot-starter-web 依赖详解
前端·spring boot·后端
辻戋12 分钟前
从零开始手写mini-webpack
前端·webpack·node.js
cch891813 分钟前
PHP vs 易语言:Web开发与桌面编程大对决
开发语言·前端·php
百撕可乐16 分钟前
NextJS官网实战02:项目的基础骨架搭建
前端·javascript·react.js
陈天伟教授22 分钟前
人工智能应用- 人工智能风险与伦理:01.数据安全
前端·人工智能·安全·xss·csrf
用户693717500138430 分钟前
Android 17 完整更新详解:Beta 3 已达平台稳定,这些新功能值得期待
android·前端·android studio
fengci.43 分钟前
Polar春季个人挑战赛WEB简单部分
android·前端
张元清1 小时前
不用 WebSocket 库,在 React 中构建实时功能
前端·javascript·面试
李白你好1 小时前
浏览器插件 | 信息收集、统一指纹识别 、DOM XSS 检测 、漏洞报告生成与管理
前端·xss
渔民小镇1 小时前
不用前端也能测试 —— 模拟客户端请求模块详解
java·服务器·前端·分布式·游戏