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

Vite+ReactTS项目lint-staged构建报错,npm run build正常求助

解决Vite+React+TS项目中lint-staged执行build报错的问题

问题现象

直接执行npm run build可正常完成生产构建,但通过lint-staged运行npm run build时,出现错误:

Could not resolve entry module "src/config/axios-interceptor.ts/index.html".

问题原因

lint-staged默认会将匹配到的暂存文件路径作为参数传递给后续执行的命令。如果你的lint-staged配置中,把npm run build放在了针对*.ts/*.tsx文件的任务列表里,lint-staged会把这些TS文件的路径传给vite build命令。

Vite在接收到额外的文件参数时,会错误地将该文件路径当作入口目录,尝试去里面查找index.html,从而出现上述找不到文件的错误。

解决方法

方法1:调整lint-staged配置,避免build命令接收文件参数

将npm run build从针对单个文件的任务中移出,改为独立的全局任务,或者通过--截断参数传递:

示例配置(.lintstagedrc.json)

{
  "*.+(jsx|ts|tsx)": ["npm run lint"],
  "*.+(json|md)": ["prettier --write"],
  "*": ["npm run build"]
}

或者,如果你希望在lint通过后再执行build,可以用串联命令:

{
  "*.+(jsx|ts|tsx)": ["npm run lint && npm run build --"],
  "*.+(json|md)": ["prettier --write"]
}

这里的--会阻止lint-staged将后续的文件参数传递给npm run build。

方法2:在Vite配置中明确指定入口文件

在vite.config.ts中添加build.rollupOptions.input,强制指定项目入口为根目录的index.html,即使Vite接收到额外参数也会使用该入口:

import path from 'node:path';
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [react()],
  resolve: {
    alias: [
      {
        find: /^~(.+)/,
        replacement: path.join(process.cwd(), 'node_modules/$1'),
      },
      {
        find: /^src(.+)/,
        replacement: path.join(process.cwd(), 'src/$1'),
      },
    ],
  },
  server: {
    port: 3000,
  },
  preview: {
    port: 3000,
  },
  // 添加以下配置
  build: {
    rollupOptions: {
      input: {
        main: path.resolve(__dirname, 'index.html'),
      },
    },
  },
});

方法3:优化lint-staged执行顺序(可选)

如果不需要每次提交都执行全量构建,可以考虑只在lint和格式检查通过后再执行build,或者使用concurrent: false确保任务按顺序执行:

{
  "concurrent": false,
  "*.+(jsx|ts|tsx)": ["npm run lint"],
  "*.+(json|md)": ["prettier --write"],
  "*": ["npm run build"]
}

内容的提问来源于stack exchange,提问作者Hue Minh Nguyen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 08:50:41