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

Webpack Encore能否使用tsconfig.json中的路径配置作为别名?

解决Symfony Webpack Encore中TypeScript路径与Webpack别名同步问题

你遇到的错误是因为tsconfig-paths-webpack-plugin属于Webpack的解析器插件,不能通过Encore的addPlugin()方法直接添加,必须配置在Webpack的resolve.plugins节点下。下面是正确的配置方式:

正确配置代码

const Encore = require('@symfony/webpack-encore');
const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin');

// 基础Encore配置(根据你的项目调整)
Encore
  .setOutputPath('public/build/')
  .setPublicPath('/build')
  .addEntry('app', './assets/app.ts')
  .enableTypeScriptLoader()
  // 其他配置如enableSingleRuntimeChunk()、enableSourceMaps()等按需添加

// 注入解析器插件到Webpack配置
Encore.configureWebpackConfig(config => {
  // 保留原有resolve插件,避免覆盖Encore默认配置
  config.resolve.plugins = [
    ...(config.resolve.plugins || []),
    new TsconfigPathsPlugin({
      // 可选:手动指定tsconfig文件路径,默认读取项目根目录的tsconfig.json
      // configFile: './tsconfig.json'
    })
  ];
});

module.exports = Encore.getWebpackConfig();

关键说明

  1. 配置位置:必须通过configureWebpackConfig()修改Webpack底层配置,将插件放入resolve.plugins,而不是用addPlugin()(该方法用于添加全局Webpack插件,不是解析器插件)
  2. 保留默认配置:用...(config.resolve.plugins || [])合并原有插件,防止Encore自带的解析配置被覆盖
  3. TS Loader依赖:确保已经调用enableTypeScriptLoader(),否则TypeScript的路径别名本身不会被Webpack识别

验证步骤

  1. 检查你的tsconfig.json中compilerOptions.paths配置是否正确,示例:
{
  "compilerOptions": {
    "baseUrl": "./assets",
    "paths": {
      "@/components/*": ["components/*"],
      "@/utils/*": ["utils/*"]
    }
  }
}
  1. 运行yarn encore dev或npm run encore dev,确认编译不再报错,且TS文件中使用@/xxx的路径能被正确解析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:50:24