2

我正在尝试在 Visual Studio 2015 中将 Angular 2 与 HMR 集成。我有 2 个项目具有相同的文件内容和相同的目录结构,并且都将 HMR 与 Angular 2 一起使用。但是每个项目的 HMR 寻找不同的更新包。即对于 App1,它会查找 Typescript 文件(并且 JS 不会在 VS 中为它们生成),例如:

在此处输入图像描述

拥有模块 A 依赖于 B,而 B 依赖于 C。如果 C 更新,则整个包都会更新,效果很好。

但在 App2 中,它会查找 1 个 Typescript 文件main.ts和 2 个Javascript文件,例如:

如果 C 更新,模块不会更新,除非我明确修改 C 的 Javascript 文件(由 VS 在构建时生成)!

在此处输入图像描述

如果我更改了其中的任何一个,我如何告诉 Webpack HMR 查找这些 Typescript 文件并更新捆绑包。

webpack.config.js的两个项目都是一样的,比如:

var path = require('path');
var webpack = require('webpack');

module.exports = {
resolve: { extensions: [ '', '.js', '.ts' ] },
entry: { 'main-client': './ClientApp/main.ts' },
output: {
    filename: '[name].js',
    path: path.join(__dirname, './wwwroot/dist'),
    publicPath: '/dist/'
},
module: {
    loaders: [
        { test: /\.ts$/, include: /ClientApp/, loader: 'ts' },
        { test: /\.html$/, loader: 'raw' }
    ]
}
 };
4

1 回答 1

0

我遇到了同样的问题,并通过在 main.ts 中启用 HMR 来解决它。

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { AppModule } from './app/app.module';

// Enables Hot Module Replacement.
declare var module: any;
if (module.hot) {
   module.hot.accept();
}

platformBrowserDynamic().bootstrapModule(AppModule);
于 2017-04-04T11:14:41.993 回答