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

如何在项目中强制使用lodash-es替代lodash?

除了你提到的ESLint no-restricted-imports 规则外,还有4种可落地的实现方案,覆盖类型校验、构建、依赖安装多个层面:

1. TypeScript 原生配置拦截

修改项目tsconfig.json,从类型解析层面屏蔽@types/lodash的自动加载,同时重定向lodash相关导入的类型指向:

{
  "compilerOptions": {
    // 显式指定只加载需要的类型包,禁止TS自动扫描node_modules/@types下的所有包
    "types": ["@types/lodash-es"],
    // 将所有lodash开头的导入类型映射到lodash-es
    "paths": {
      "lodash": ["node_modules/@types/lodash-es/index.d.ts"],
      "lodash/*": ["node_modules/@types/lodash-es/*"]
    }
  }
}

配置后TS不会再自动加载@types/lodash的类型,自然不会出现提示引入@types/lodash的问题。

2. 构建工具别名重定向

从构建环节直接替换导入路径,就算代码里写错了import xxx from 'lodash/xxx',最终打包也会自动转成lodash-es的ESM产物。
以Vite为例,配置如下:

// vite.config.ts
import { defineConfig } from 'vite'
import path from 'node:path'

export default defineConfig({
  resolve: {
    alias: [
      { find: /^lodash$/, replacement: path.resolve(__dirname, 'node_modules/lodash-es/lodash.js') },
      { find: /^lodash\/(.*)$/, replacement: path.resolve(__dirname, 'node_modules/lodash-es/$1.js') }
    ]
  }
})

Webpack、Rollup、Rspack等构建工具都有对应的alias配置能力,逻辑完全一致。

3. 包管理器依赖覆写

因为@types/lodash-es本身依赖@types/lodash,无法直接通过卸载依赖的方式移除它,可以通过包管理器的overrides能力,把所有依赖树里对@types/lodash的引用,直接指向本地安装的@types/lodash-es,从根源上避免两个类型包共存的问题。
以pnpm为例,在package.json中添加配置:

{
  "pnpm": {
    "overrides": {
      "@types/lodash": "npm:@types/lodash-es@^4.17.12"
    }
  }
}

npm 8+ 同样支持overrides配置,yarn可以使用resolutions字段实现相同效果,配置后重新执行依赖安装命令即可生效。

4. 全局类型声明兜底

在项目全局类型目录(一般是src/types或者tsconfig里配置的typeRoots目录)下新增lodash.d.ts文件,手动声明lodash模块的类型规则:

declare module 'lodash' {
  // @ts-ignore 禁止引入CommonJS版本lodash,请统一使用lodash-es
  export * from 'lodash-es';
}
declare module 'lodash/*' {
  // @ts-ignore 禁止引入CommonJS版本lodash,请统一使用lodash-es
  const content: never;
  export default content;
}

配置后只要代码里从lodash路径导入,TS会直接抛出错误提示,强制开发者使用lodash-es。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:22:02