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

ASP.NET Core 2.0+TypeScript项目Webpack输出结构与批量入口问询

针对你的ASP.NET Core 2.0项目Webpack配置问题解答

问题1:是否可将所有TypeScript文件作为Webpack的入口?

当然可以!不需要手动逐个指定入口文件,我们可以借助Node.js的fs和path模块自动遍历Scripts文件夹下的所有.ts文件,把它们全部设为Webpack的入口点。

问题2:执行Webpack后,能否生成与原目录结构一致的输出?

完全没问题!通过配置Webpack的output.filename,我们可以让生成的.js文件保持和原.ts文件完全一致的目录结构,输出到wwwroot/Output目录下。


修改后的完整webpack.config.js配置

const fs = require('fs');
const path = require('path');

// 递归遍历Scripts文件夹,生成所有.ts文件的入口配置
function getEntryPoints() {
  const entryPoints = {};
  const scriptsRoot = path.resolve(__dirname, 'Scripts');

  function scanDirectory(dir) {
    const files = fs.readdirSync(dir);
    files.forEach(file => {
      const fullFilePath = path.join(dir, file);
      const fileStats = fs.statSync(fullFilePath);
      
      if (fileStats.isDirectory()) {
        // 如果是文件夹,继续递归遍历
        scanDirectory(fullFilePath);
      } else if (path.extname(file) === '.ts') {
        // 生成入口键:相对于Scripts的路径,去掉.ts后缀
        const relativePath = path.relative(scriptsRoot, fullFilePath);
        const entryKey = relativePath.replace(/\.ts$/, '');
        entryPoints[entryKey] = fullFilePath;
      }
    });
  }

  scanDirectory(scriptsRoot);
  return entryPoints;
}

module.exports = {
  // 自动生成所有.ts文件的入口
  entry: getEntryPoints(),
  output: {
    // 输出目录指向wwwroot/Output
    path: path.resolve(__dirname, 'wwwroot/Output'),
    // [name]会替换成我们生成的相对路径,保持原目录结构
    filename: '[name].js'
  },
  module: {
    rules: [
      // 配置ts-loader处理TypeScript文件
      {
        test: /\.ts$/,
        use: 'ts-loader',
        exclude: /node_modules/
      }
    ]
  },
  resolve: {
    // 让Webpack能识别.ts和.js文件的导入
    extensions: ['.ts', '.js']
  }
};

关键说明

  1. 自动入口生成:getEntryPoints函数会递归遍历Scripts下的所有文件,把每个.ts文件的相对路径(去掉后缀)作为入口键,文件绝对路径作为入口值,这样Webpack就会把所有.ts文件都当作入口处理。
  2. 保持目录结构:output.filename中的[name]会对应入口键(也就是原文件相对于Scripts的路径),比如Scripts/Modules/User.ts会生成wwwroot/Output/Modules/User.js,完美复刻原目录结构。
  3. TypeScript处理:需要确保你已经安装了ts-loader和typescript依赖,可以通过npm install ts-loader typescript --save-dev安装,同时项目根目录要有tsconfig.json配置文件(可以通过tsc --init生成)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:17:17