2016-08-21 73 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。它確實是在向右搖擺樹木。