が、私は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'.
このエラーは表示されますが、ビルドはまだ成功しています。
これはタイピングが正しく指定されていないと問題ですか?それとも何か他のものですか?
ソリューションです。バンドル – hamchapman