2016-06-20 5 views
0

が、私は2つの簡単な図書館に私がダウンして見ている問題を低減しましたバンドルのビルド:私は2つの異なるライブラリーを作成しようとしている活字体モジュールが見つかりませんが、WebPACKのはまだ

- 1が低レベルのライブラリです、他のものは、開発者に公開されている概念の点で、より高いレベルです。

どちらもTypescriptを使用して記述され、webpackを使用してビルドされます。両方とも、ノードとWebアプリケーションの両方で使用できるように設計されています。

私が遭遇している問題は、本質的にノードビルドを「デフォルト」ビルドにして、Webビルドを特別なケースにすることです。上位レベルのライブラリでは、下位レベルのライブラリをpackage.jsonの依存関係として設定し、バンドルされたWebビルドをインポートします。これはうまくいくようですが、エラーを出力します。

これは、「低レベル」のライブラリです:https://github.com/hamchapman/typescript-lib-webpack-test

は、これは「より高いレベル」のライブラリである:2つのプラットフォーム間で変更する必要があるhttps://github.com/hamchapman/typescript-lib-webpack-sdk-test

モジュールは、WebSocketのライブラリです:フェイ-のWebSocketノード設定ではブラウザWebsocketがWeb設定になっています。次のようにclient.tsに、必要とされる

const path = require('path') 

module.exports = { 
    entry: './src/client', 
    output: { 
    library: 'MultiPlatformClient', 
    libraryTarget: 'umd', 
    filename: "target/web.js" 
    }, 
    devtool: 'source-map', 
    resolve: { 
    extensions: ['', '.webpack.js', '.web.js', '.ts', '.tsx', '.js'], 
    modulesDirectories: ['node_modules', 'transports'], 
    alias: { 
     'ws': 'ws.web' 
    } 
    }, 

    module: { 
    loaders: [ 
     { test: /\.tsx?$/, loader: 'ts-loader' } 
    ], 
    preLoaders: [ 
     { test: /\.js$/, loader: 'source-map-loader', exclude: /node_modules/ } 
    ] 
    } 
} 

import WebSocket from "ws"; 

export default class Client { 
    public token: string 
    public ws: WebSocket 

    constructor(token: string) { 
    this.token = token 
    this.ws = new WebSocket('ws://test.com', [], {}) 
    } 
} 

これは、内のすべての罰金である私は、この(低レベルのライブラリで)コンフィグ設定で、WebPACKのを使用して、この作品を作りました下位レベルのライブラリであり、エラーなしで正常に構築されます。

しかし、これは、より高いレベルのライブラリのためのpackage.jsonである:これで

"dependencies": { 
    "node-libs-browser": "^1.0.0", 
    "multi-platform-client": "git+ssh://[email protected]:hamchapman/typescript-lib-webpack-test.git" 
    } 

sdk-client.tsファイルに:

import Client from "multi-platform-client/web"; 

export default class SDKClient { 
    public client: Client 

    constructor(token: string) { 
    this.client = new Client(token) 
    } 
} 

私はWebPACKのを実行すると、私はこの出力を得ます:

webpack 
ts-loader: Using [email protected] and /Users/Hami/Pusher/typescript-higher-test/tsconfig.json 
Hash: 8fef5a551de36ef9403c 
Version: webpack 1.13.1 
Time: 1633ms 
       Asset  Size Chunks    Chunk Names 
    ./dist/bundle.js 4.67 kB  0 [emitted] main 
./dist/bundle.js.map 5.61 kB  0 [emitted] main 
    + 4 hidden modules 

ERROR in ./src/sdk-client.ts 
(1,20): error TS2307: Cannot find module 'multi-platform-client/web'. 

このエラーは表示されますが、ビルドはまだ成功しています。

これはタイピングが正しく指定されていないと問題ですか?それとも何か他のものですか?

答えて

関連する問題