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

Rollup构建时如何仅引入指定node_modules模块并排除其余第三方依赖

解决方案

可用配置参考

import path from 'path';
import commonjs from '@rollup/plugin-commonjs';
import { nodeResolve } from '@rollup/plugin-node-resolve';

export default {
  input: "dist/tmp/index.js",
  output: {
    file: "dist/umd/index.js",
    format: 'umd',
    name: 'Foo',
    globals: {
      '@tensorflow/tfjs': 'tf',
    }
  },
  context: 'window',
  // 显式外置tfjs
  external: ['@tensorflow/tfjs'],
  plugins: [
    nodeResolve({
      // 仅允许解析tensor-as-base64模块,其余node_modules依赖全部自动外置
      resolveOnly: ['tensor-as-base64'],
      // monorepo场景下填写node_modules所在的根目录绝对路径
      rootDir: path.resolve(__dirname, '../../'),
    }),
    commonjs({
      // 同时匹配临时构建目录的源码和目标模块文件,避免解析卡住
      include: [
        path.resolve(__dirname, 'dist/tmp/**'),
        /node_modules\/tensor-as-base64/
      ],
      // 低版本commonjs插件需手动指定命名导出,v21+版本可删除该项
      namedExports: {
        [path.resolve(__dirname, '../../node_modules/tensor-as-base64/dist/index.js')]: ['tensorAsBase64'],
      }
    })
  ]
};

关键规则说明

  • resolveOnly配置直接限定仅打包指定的tensor-as-base64模块,其余所有node_modules下的依赖不会被打入产物,完全匹配需求。
  • 显式指定rootDir适配monorepo架构,避免插件找不到上层目录的node_modules依赖。
  • commonjs.include同时覆盖源码临时目录和目标第三方模块,解决因未匹配到需要转译的CommonJS文件导致的进程卡死问题。
  • 路径配置需根据你实际的monorepo目录层级调整,确保能正确定位到根目录的node_modules文件夹。

内容的提问来源于stack exchange,提问作者thekevinscott

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:15:05