You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让tsup/unbuild将第三方依赖打包进输出文件而非依赖node_modules?

实现第三方依赖代码内联打包(tsup/unbuild)

完全可行,这本质是让打包器把指定第三方库的代码**内联(bundle)**到你的库输出文件中,同时通过TreeShaking只保留你实际用到的代码片段,终端用户无需额外安装依赖。下面分别给出tsup和unbuild的配置方案:

一、tsup 配置方法

tsup默认在库模式下会将node_modules中的依赖标记为外部依赖(external),所以需要修改配置,将目标依赖从external列表中排除:

创建或修改tsup.config.ts:

import { defineConfig } from "tsup";

export default defineConfig({
  entry: ["src/index.ts"], // 你的入口文件
  format: ["esm", "cjs"], // 输出格式,按需选择
  dts: true, // 生成类型声明文件
  external: [], // 空数组表示不排除任何依赖,也可以明确指定不包含"change-case"
  treeshake: true, // 自动移除未使用的代码(默认开启,可显式声明)
  minify: true, // 可选,压缩代码进一步减小体积
});

配置后执行打包命令,输出文件中就会包含camelCase函数的实现,而非保留import语句。

二、unbuild 配置方法

unbuild基于Rollup,默认同样会将第三方依赖设为外部依赖,可通过两种方式实现内联:

方式1:使用inlineDependencies指定内联依赖

修改unbuild.config.ts:

import { defineBuildConfig } from "unbuild";

export default defineBuildConfig({
  entries: ["src/index"],
  declaration: true,
  inlineDependencies: ["change-case"], // 明确指定要内联的依赖
  rollup: {
    treeshake: true, // 开启TreeShaking保留必要代码
    emitCJS: true, // 按需生成CommonJS格式
  },
});

方式2:修改externals排除目标依赖

import { defineBuildConfig } from "unbuild";

export default defineBuildConfig({
  entries: ["src/index"],
  declaration: true,
  externals: {
    "change-case": false, // 将该依赖从外部依赖中移除
  },
  rollup: {
    treeshake: true,
  },
});

验证效果

执行打包后,查看输出文件(比如dist/index.js),会看到camelCase的具体实现被内联,而非保留import { camelCase } from "change-case"的语句,和你期望的输出一致。

内容的提问来源于stack exchange,提问作者Anton Ödman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:50:37