import cost插件需满足四项条件才生效:①文件语言模式为javascript/typescript;②插件已启用;③导入路径为node_modules内静态路径;④包支持exports字段静态分析,否则仅单入口umd或明确exports的包可准确估算。

Import Cost 插件不是“装上就变快”,而是让你在写 import 的瞬间就知道代价——它不优化构建,但能防止你无意中引入一个 300 kB 的包。
插件装完没反应?先看语言模式和 node_modules
插件只对 javascript 和 typescript 文件生效,右下角显示 Plain Text 就等于完全关闭。按 Ctrl+Shift+P 输入 Change Language Mode,手动切到 JavaScript 或 TypeScript。
- 确保当前打开的是项目根目录(含
package.json),不是子文件夹 -
node_modules必须存在且完整;如果刚初始化项目,先跑yarn install或npm install - 终端里执行
node --version,没输出说明 Node.js 没装或没进PATH,插件会卡在???
为什么 import 行右边没数字,或者全是 NaN?
常见原因不是插件坏了,而是路径或语法超出了静态分析能力:
- 用了 Webpack 别名(如
@/utils)但没配jsconfig.json的compilerOptions.baseUrl和paths - 导入语句含动态拼接:
import(`./pages/${name}.tsx`)或require('./' + path),插件直接跳过 - 路径指向未发布的本地包(比如
file:../my-lib),或.d.ts类型包,默认不计体积,需开启Import Cost: Enable Typescript Support - 多版本嵌套时(如
node_modules/lodash/node_modules/@types/lodash),插件可能只读最外层,导致估算偏差
想更准一点?配 webpack 或 vite 上下文
默认用轻量解析器,快但粗略;启用打包工具上下文后,能识别 resolve.alias、externals、define 等配置,体积估算更贴近真实构建结果:
- 项目根目录建
import-cost.config.js,内容为:module.exports = { webpackConfigPath: './webpack.config.js' }; - 或指定分析器:
module.exports = { analyzer: 'vite' };(需已安装vite-plugin-visualizer) - 注意:必须已安装
webpack-bundle-analyzer或对应 dev 依赖,否则插件降级回默认行为
别把它当构建报告用
Import Cost 显示的是模块入口文件及其直接依赖的压缩后体积,不是最终产物里实际保留的代码量:
- tree-shaking 后删掉的代码,它不会减;minify 合并变量、scope hoisting 去重,它也不感知
- 条件导入(
process.env.NODE_ENV === 'dev' && import('./debug'))会被全量计入 - 真正要定位“谁让 bundle 变大了”,还得靠
webpack-bundle-analyzer或vite-plugin-visualizer查构建产物
它的价值不在精确,而在把体积意识塞进编码习惯——看到 import moment from 'moment' 右边标着 ~240 kB,你自然会停一下,去查 dayjs。











