2016-08-21 69 views
2

我在file car.ts中有一个名为Car的类,在另一个file engine.ts中有两个其他类的引擎。如何使用Typescript和Webpack的类来使用树形结构?

car.ts

import { V8Engine, Engine } from './engine'; 

class SportsCar { 
    constructor(private engine: Engine) {} 

    toString() { 
    return this.engine.toString() + ' Sports Car'; 
    } 
} 

engine.ts

export interface Engine { 
    toString(): string; 
} 

export class V6Engine implements Engine { 
    toString() { 
    return 'V6'; 
    } 
} 

export class V8Engine implements Engine { 
    toString() { 
    return 'V8'; 
    } 
} 

export function getVersion() { 
    return '1.0'; 
} 

console.log(new SportsCar(new V8Engine()).toString()); 

的car.ts文件只导入V8Engine类,但V6Engine类也出现即使在缩小的文件。我从engine.ts中导出的​​未使用函数被删除。

当没有UglifyJS插件运行Webpack时,V6Engine类将按照预期标记为/* unused harmony export V6Engine */。 但添加插件后,我得到这个警告信息来自UglifyJS:

WARNING in car.prod.bundle.js from UglifyJs 
Dropping unused function getVersion [car.prod.bundle.js:89,9] 
Side effects in initialization of unused variable V6Engine [car.prod.bundle.js:73,132] 

我有created a repository哪里出了问题可以重现。 克隆,安装和运行npm run webpacknpm run webpack-prod重现了此问题。

不知道这是否与Typescript转录,UglifyJS或这些工具的编排有关。 我正在使用Typescript 2.0-dev与es2015模块和Webpack 2.1.0-beta.21。

+0

我看到了你在webpack repo上报告的问题,看起来这是正确的方式,但是由于UglifyJs2错误而不是发生树状抖动。 –

+0

用Babili在存储库中解决它。 – Blacksonic

回答

0

关键是输出ES2015模块和代码,然后在其上运行Babili minifier。它确实是在向右摇摆树木。