2016-07-05 120 views
1

我最近開始使用typescript,無法理解如何構建一個使用webpack的其他打字稿模塊中使用的打字稿庫。捆綁和使用webpack構建的打字稿庫的正確方法?

此外,這個庫,並打算在瀏覽器中運行。

目前我已經結束了以下結構,並建立輸出:

lib 
├── build 
│   ├── typings // tsc output with declaration:true 
│   │   ├── Bar.d.ts 
│   │   └── Foo.d.ts 
│   └── lib.bundle.js //webpack bundle file 
├── src 
│   ├── Bar.ts 
│   └── Foo.ts 
├── bower.json 
├── package.json 
└── tconfig.json 

的WebPack配置

webpackOptions = { 
    resolve: { extensions: ['', '.ts'] }, 
    module: { 
     loaders: [{ test: /\.ts$/, exclude: [/node_modules/,/out/,/.*\.d\.ts/],include:[/\.ts$/], loaders: ['ts-loader']}] 
    }, 
    ts:{ 
     compilerOptions:compilerOptions 
    }, 
    output: { 
     library:"mylib", 
     libraryTarget:'commonjs', 
     filename: 'mylib.bundle.js' 
    } 
    } 

tsconfig.json

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "sourceMap": true, 
    "outDir":"out", 
    "declaration": true 
    }, 
    "exclude": [ 
    "node_modules", 
    "bower_components", 
    "typings/global", 
    "build" 
    ] 
} 

一第二Foo.ts例如:

export class Foo{ 
    foo(){} 
} 

Bar.ts

import {Foo} from './Foo' 
export class Bar{ 
    public foo:Foo = new Foo(); 
} 

所以我有以下建輸出:

  • 的WebPack束
  • 打字稿聲明每個文件

而問題是:

  • 如何導入/消耗通過涼亭該庫在其他瀏覽器應用程序(將使用帶有的WebPack打字稿太)?
  • 在使用此庫的應用程序中使用哪種導入語法(例如,import .. fromrequire)?
  • 也許我不應該使用webpack捆綁庫呢?

UPDATE:二手NPM管理打字稿模塊之間的本地依賴性不亭子由@basarat的建議和一切運行良好

回答

6

也許我不應該使用的WebPack在所有

捆綁庫

這是我推薦的。將捆綁銷售給頂級應用程序用戶。

例如,這裏是一個模塊csxhttps://github.com/basarat/csx你可以在TypeScript中使用。你可以看到它沒有以任何特殊的方式捆綁在一起。它的只是一個節點模塊。如果人想在瀏覽器中捆綁使用它是對他們

更多

https://basarat.gitbooks.io/typescript/content/docs/quick/nodejs.html

+0

我也要去的只是提供編譯.js文件,並把它留給應用程序的路徑開發人員瞭解我的庫應該如何捆綁到他們的應用程序中。 –

+1

好的。當節點應用程序通過NPM使用庫時,這是與節點模塊一起使用的方式。 在使用bower的應用程序中如何使用TS庫? 我已經擁有一個現有的TS應用程序,它具有在bower和ambient類型定義中管理的依賴關係。 是否可以通過NPM導入庫並通過webpack/broserify與應用程序綁定? – Dagon

+0

看看http://young-programmer.life/2017/02/creating-a-typescript-library-using-webpack/ –