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

如何在Rollup+TypeScript项目中打包jQuery等依赖?

解决Rollup打包TypeScript项目时jQuery未被打包的问题

嘿,这个问题我之前也踩过坑!核心原因其实有两个:一是你只装了类型定义@types/jquery,没装实际的jQuery库;二是Rollup默认不处理CommonJS格式的模块,而jQuery正好是用这种格式导出的。下面一步步给你搞定:

第一步:安装实际的jQuery库

@types/jquery只是给TypeScript提供类型提示的“壳子”,不是真正的jQuery运行代码。先把本体装上:

npm install jquery --save
# 用yarn的话就跑这个
yarn add jquery

第二步:安装Rollup的CommonJS转换插件

Rollup天生更适配ES模块,处理CommonJS格式的模块得靠rollup-plugin-commonjs帮忙。先装这个开发依赖:

npm install rollup-plugin-commonjs --save-dev
# yarn版本
yarn add rollup-plugin-commonjs --dev

第三步:修改Rollup配置文件

把commonjs插件加入你的配置,还要明确指定jQuery的导出项,让Rollup能正确识别它。修改后的配置大概是这样:

import * as fs from 'fs';
import resolve from 'rollup-plugin-node-resolve';
import typescript from 'rollup-plugin-typescript2';
import commonjs from 'rollup-plugin-commonjs';

export default {
  input: 'src/index.ts', // 替换成你项目的实际入口文件路径
  output: {
    file: 'dist/bundle.js', // 输出文件路径
    format: 'iife', // 适合浏览器环境的打包格式,会自动把代码包裹在立即执行函数里,避免全局污染
    name: 'MyProject' // 可选:如果需要在全局访问你的项目代码,可以设置这个名称
  },
  plugins: [
    resolve(), // 帮Rollup找到node_modules里的模块
    commonjs({
      include: 'node_modules/**', // 处理所有node_modules里的CommonJS模块
      namedExports: {
        // 明确指定jQuery的导出项,因为它默认是通过module.exports导出的,Rollup需要额外识别
        'node_modules/jquery/dist/jquery.js': ['$', 'jQuery']
      }
    }),
    typescript() // 处理TypeScript代码
  ]
};

第四步:在TypeScript中正常使用jQuery

现在你可以在TS文件里放心引入并使用了:

import * as $ from 'jquery';

$(document).ready(() => {
  console.log('终于能正常用jQuery啦!');
});

这样重新打包后,jQuery就会被一起打包到你的bundle文件里,运行时再也不会出现$ is not defined的错误了~

内容的提问来源于stack exchange,提问作者K. Kowalczyk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:12:43