Webpack Custom基于已编译bundle的d.ts来解析依赖关系

时间:2017-06-30 13:36:40

标签: asp.net-mvc angular typescript webpack

这是我第一次在stackoverflow上提出问题,所以如果我写了一些奇怪的内容并且感谢所有人的帮助,我会提前道歉。

我已经实现了基于Asp.Net MVC 5,TypeScript 2.2.0和使用Webpack 3.0.0编译的Angular 4.0.0的模块化解决方案。 它有一个主应用程序(MVC),它必须托管外部模块,这些模块是具有自己的后端Web Apis和自己的Angular组件的其他MVC应用程序。

我的目标是编译和部署单个模块,而不需要其他模块或主应用程序源代码的源代码,但只使用已编译的软件包和绝对类型。 通过这种方式,我只能部署我的模块(bundle.js和dlls)附加到主应用程序。

这个过程应该是:

  1. 编译主应用程序
  2. 在服务器上部署
  3. 编译Module1
  4. 在主App bin上复制bin dll
  5. 在主应用程序脚本文件夹
  6. 上复制Module1 js包

    依旧......

    我只能使用webpack编译单个模块,并使用最后生成的" records.json"来解析相同的名称。文件。

    问题是当我想使用其他模块的组件时。我必须使用从其他模块生成的d.ts导入类:

    /// <reference path="../../../typings/module1.d.ts" />
    import { HttpWrapperService } from "Module1/App/http-wrapper/http-wrapper.service";
    

    但是当Webpack遇到import语句时,它无法解析模块,因为没有http-wrapper.service的源代码,并返回此错误:

    Module not found: Error: Can't resolve 'Module1/App/http-wrapper/http-wrapper.service' in 'C:\svn\AngularApp\Module2\App\users'
    

    如何使用&#34; records.json&#34;告诉Webpack解析从d.ts导入的模块名称?文件? 也许有插件?

    解决方案的结构如下:

    Root
    |--- Main (MVC App)
    |     |
    |     |--- Manifest.js
    |     |--- Vendor.js (bundle of all third party libraries like Angular or jQuery)
    |     |--- Polyfills.js
    |     |--- App.js (bundle of main app)
    |
    |--- typings
    |     |
    |     |--- app.d.ts
    |     |--- module1.d.ts
    |     |--- module2.d.ts
    |
    |--- Module1
    |     |
    |     |--- App
    |           |
    |           |--- http-wrapper
    |                 |
    |                 |--- http-wrapper.service.ts
    |
    |--- Module2
          |
          |--- App
                |
                |--- users
                      |
                      |--- users.component.ts
                      |--- users.service.ts
    

0 个答案:

没有答案