私はGrunt、Typescript、Webpack、およびローダーを初めて使いました。これらのツールのドキュメントを理解しようとしています。便利ですが、ts-loaderはこのチュートリアルhttp://www.jbrantly.com/typescript-and-webpack/を参照していますが、これは参考にされていますが、私が必要とするものではありません。typescriptをコンパイルしてJavaScriptファイル用のマップを作成するgruntタスクを作成するには
私たちのプロジェクトでは、JavasCriptとJSXだけでなく、Typescriptを使用しています。grunt ts
タスクを使用して、ソースコードを含むtypescriptをjavascriptにコンパイルしています。 javascriptは最終的に一緒にコンパイルされ、最終的に最小ファイルと対応するソースマップファイルが生成されるように圧縮されます。残念なことに、ソースマップは最終製品にタイプスクリプトのJavaScriptを含むことはありません。これは、本番環境からタイプスクリプトで作成されたjavascriptソースファイルを見ることができないためです。通常のjavascriptファイルのみ。
gruntファイルの既存のwebpackタスクを変更して、tsコンパイラの代わりにts-loaderを使用してコンパイルし、マップを縮小して提供できると考えました。 ts-loaderがコンパイルして必要なマップを生成することを期待しています。
既存の面倒なタスクが
webpack: {
options: {
entry: webpackEntry,
output: {
path: webpackDest,
filename: 'our-react-min.js',
library: ["LIB", "apps"],
libraryTarget: "assign",
pathInfo: true
},
externals: grunt.file.readJSON('our-ui/webpack-externals.json'),
stats: {
// Configure the console output
colors: true,
modules: false,
reasons: true
},
progress: true
},
prod: {
stats: {
colors: false,
modules: true,
reasons: true
},
plugins: [
new webpack.optimize.UglifyJsPlugin(),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.DedupePlugin()
]
},
dev: {
debug: true,
devtool: 'inline-source-map',
cache: true
}
}, ...
だったと私は今、この中にそれを回しました:
webpack: {
options: {
entry: webpackEntry,
output: {
path: webpackDest,
filename: 'our-react-min.js',
library: ["LIB", "apps"],
libraryTarget: "assign",
pathInfo: true
},
resolve: {
// Add `.ts` and `.tsx` as a resolvable extension.
extensions: ['', '.webpack.js', '.web.js', '.ts', '.tsx', '.js']
},
module: {
loaders: [
// all files with a `.ts` or `.tsx` extension will be handled by `ts-loader`
{ test: /\.tsx?$/, loader: 'ts-loader' }
]
},
ts: {
"compilerOptions": {
"target": "es5",
"sourceMap": true,
"jsx": "react",
"experimentalDecorators": true
},
"exclude": [
"node_modules"
]
},
externals: grunt.file.readJSON('our-ui/webpack-externals.json'),
stats: {
// Configure the console output
colors: true,
modules: false,
reasons: true
},
progress: true
},
prod: {
stats: {
colors: false,
modules: true,
reasons: true
},
plugins: [
new webpack.optimize.UglifyJsPlugin(),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.DedupePlugin()
]
},
dev: {
debug: true,
devtool: 'inline-source-map',
cache: true
}
}, ...
私たちのビルドは、環境に応じて、grunt webpack:dev
またはgrunt webpack:prod
を呼び出します。
これを実行すると、すべてのJavaScriptがクロージャコンパイラを使用して一緒に縮小されます。 1分のファイルの最後に、マップファイルをポイントするコメント付き参照が追加されます。私が解決しようとしている問題は、production typescriptでコンパイルされたJavaスクリプトのソースマップがないことです。ソースマップは、typescriptから作成されたjavascript以外はすべてあります。
私は右の場所にある分、マップファイルを探して、コマンドラインでgrunt webpack:prod
を実行
によってテストされている(彼らはそこにあり、おそらく非tsジャバスクリプトを含む)
prodモードでwarをデプロイし、source-mapをonにして、ブラウザのdevツールから期待されるJavaScriptファイルを探します。
まだブラウザでソースファイルが見つかりません。
この不正な作業は正しいですか?それとも別のところで問題が...?私はすべてが正常に動作させることもなく、私の場合にはgrunt ts
を使用
私はtsconfigファイルを使用できません。代わりに、私はgruntタスクでtsオプションを使用しています。 https://github.com/TypeStrong/ts-loaderをご覧ください。 – GLaDOS
ts gruntタスクでも同じ問題がありました。私の解決策はgruntタスクを使用することでしたが、tsconfig.jsonを使用して作業を行いました。私は他の解決策について考えていきます。 –
ありがとう!私はコンパイラーのオプションがtsconfig.jsonやgruntタスクにある可能性があることをドコウから理解しました。タスクのオプションはtsconfig.jsonのオプションを上書きすることに注意してください。しかし、それは表現された方法から、私はどちらの場合でもtsconfigファイルが存在しなければならないかどうかは確かではありませんでした。 – GLaDOS