【初心者向け】Gulp + Webpack + TypeScriptの設定
環境
・Mac ターミナル(WindowsでもCygwinなどでOK)
・SublimeText(こちらもjsonファイルを編集できるソフトがあればOK)
目次
- Node.jsのインストール
- package.jsonの作成
- 各種モジュールのインストール
- tsconfig.jsonの作成
- TSファイルの作成
- webpack.config.jsの編集
- gulpfile.jsを作成
- gulpの実行
基本はTypeScript+Gulp+WebPack+jQueryで開発環境を構築なので、まずは一読されることをオススメします。
更新履歴
2018.03.04
:
・グローバルインストールから「typings」を削除しました。
・「jQueryの型定義ファイルのインストール」の項目も併せて削除しました。
(TypeScript 2.0から「typings」の使用は非推奨のようです。)
2018.05.01
:
・「tsconfig.json」ファイルの「files」箇所を修正しました。
・「config.ts」ファイルの「ENV」箇所を修正しました。
2018.07.14
:
・各種モジュールのインストール箇所 ローカルインストールにjqueryを追加しました。
1.Node.jsをインストール
Node.jsの公式サイトよりダウンロード、インストールを行ってください。
Node.js
インストール後は、ターミナル(or Cygwin)でバージョンの確認を行っておきましょう。
node -v
npm -v
2. package.jsonの作成
package.jsonファイルは必要なパッケージをインストールするために必要なファイルです。
適用するフォルダに作成してください。
ターミナルで直接フォルダ(プロジェクトルート)を開く方法が便利です。
参考:Finderから直接その場所のターミナルを開く方法
npm init -y
プロジェクトルートに「package.json」ファイルが出来上がっているはずです。
実行するとpackage.jsonが出来上がります。
後述しますが、このファイルに記載されたライブラリ全てをnpm installで
インストールできるようになりますので、他の人に配布時に環境構築が簡単にできます。
3. 各種モジュールのインストール
npmで必要な各種モジュールのインストールをします。
モジュールのインストールには「グローバルインストール
」と「ローカルインストール
」があります。
Gulpを使う場合、グローバル・ローカル両方のインストールが必要になります。
まず、「グローバルインストール」。
-gが「グローバルインストール」のオプションです。
npm i -g typescript gulp webpack-stream
次に「ローカルインストール」。
-Dが「ローカルインストール」のオプションです。
npm i -D typescript gulp webpack webpack-stream ts-loader jquery @types/jquery del
補足:@types/jquery
はjQueryの型定義ファイルです。
詳しい説明は「TypeScript2.0時代の、型定義ファイル」をお読みください。
念のため、インストール後にモジュールの確認をしておくといいです。
npm ls --depth=0
4.tsconfig.jsonの作成
ターミナル
tsc --init
tsc --init
先人に習い、TypeScriptのコンパイル情報を記載する、「tsconfig.json」を以下のように書き換えます。
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"noImplicitAny": false,
"sourceMap": false
},
"files": [
"ts/app.ts",
"ts/model.ts",
"ts/config.ts",
]
}
「tsconfig」の詳細は公式サイトをご覧ください。
TypeScript公式サイト
5. TSファイルの作成
tsディレクトリを作り、config.ts, model.ts, app.tsの3つのファイルを作っていきます。
config.ts
'use strict';
namespace Config {
export const ENV:string = "dev";
}
export default Config;
model.ts
'use strict';
import Config from './config';
namespace Model {
export class Person {
constructor(private name:string = 'dummy') {
}
public getName():string {
if (Config.ENV != 'production') {
return this.name
} else {
return this.name + 'さん';
}
}
}
}
export default Model;
app.ts
'use strict';
import Model from './model';
import $ = require("jquery");
var user = new Model.Person("Mike");
$(() => {
$("#name").html(user.getName());
});
6. webpack.config.jsの編集
プロジェクトルートに、webpackの設定ファイルであるwebpack.config.js
を作成します。
'use strict';
var path = require('path');
var webpack = require('webpack');
var env = process.env.NODE_ENV;
let config = {
entry: {
app :'./ts/app.ts'
},
output: {
filename: '[name].js'
},
resolve: {
extensions:['.ts', '.webpack.js', '.web.js', '.js']
},
module: {
loaders: [
{ test: /\.ts$/, loader: 'ts-loader' }
]
},
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV' : JSON.stringify(env)
}),
new webpack.optimize.OccurrenceOrderPlugin()
]
};
if (env === 'production') {
config.output.filename = '[name].min.js';
config.plugins.push(new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
}
}));
} else {
config.devtool = 'source-map';
}
module.exports = config;
7. gulpfile.jsを作成
プロジェクトルートに、Gulpの実行ファイルであるgulpfile.js
を作ります。
var gulp = require('gulp');
// webpack
var webpack = require('webpack');
var webpackStream = require('webpack-stream');
var webpackConfig = require('./webpack.config.js');
var del = require('del');
var TS_SRC = './ts/**/*.ts';
var JS_DEST = './dist/js/';
gulp.task('clean', function() {
del([JS_DEST]);
});
gulp.task('webpack', function () {
return gulp.src([TS_SRC])
.pipe(webpackStream(webpackConfig, webpack))
// エラーが発生した時に終了させない
.on('error', function(error) {
this.emit('end');
})
});
gulp.task('watch', function () {
gulp.watch(TS_SRC, ['webpack']);
});
gulp.task('default', ['webpack', 'watch']);
8. gulpの実行
プロジェクトルートで以下コマンドを実行してください。
gulp
「8. gulpfile.jsを作成」で設定したdist/js/
フォルダにapp.js
ファイルが出来上がります。
あとは、htmlでapp.js
ファイルを読み込めば使えるはずです。
Author And Source
この問題について(【初心者向け】Gulp + Webpack + TypeScriptの設定), 我々は、より多くの情報をここで見つけました https://qiita.com/T_Tajiri/items/4475991602702eac454e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .