• aboutabout
  • servicesservices
  • worksworks
  • mediamedia
  • contactcontact
  • homeサイトトップ
  • about会社概要
  • services業務内容
  • works実績紹介
  • mediaメディア
  • contactお問い合わせ
ja/

media

メディア

  1. サイトトップ
  2. メディア
  3. プログラミングの記事
  4. Gulpでwebpackを使ったTypeScriptの自動コンパイル環境を作成してみる

Gulpでwebpackを使ったTypeScriptの自動コンパイル環境を作成してみる

  • 2020.04.29
  • プログラミング
  • Gulp
Updated: 2020.04.29
これまでの記事でTypeScriptをコンパイルする方法について色々とまとめてきました。今回はさらにGulpを使ってタスクとして自動検知されるようにして、TypeScriptがコンパイルできるようにしていきたいと思います。 (こちらの記事も参考に) 「webpackでTypeScriptの自動コンパイル環境を作成してみる」 「TypeScriptの導入・コンパイルと設定ファイルtsconfig.jsonを触ってみる」   まずは必要なパッケージをnpmでインストールしていきます。今回はGulpの方でローカルサーバーと自動ブラウザリロードを利用します。Gulp関連のパッケージは2種類、TypeScript、webpack関連のパッケージは5種類となっています。
$ npm install --save-dev gulp browser-sync
$ npm install --save-dev typescript webpack webpack-cli webpack-stream ts-loader
  パッケージのインストールが完了すると、package.jsonのdevDependenciesに追加されているのが確認できます。また、この時にGulpのタスク検知のコマンドをscriptsに指定しておきます。 【package.json】
{
 ....... 
 "scripts": { 
  "dev": "npx gulp"
 },
 "devDependencies": {
  "gulp": "^4.0.2",
  "browser-sync": "^2.26.7",
  "ts-loader": "^7.0.1",
  "typescript": "^3.8.3",
  "webpack": "^4.43.0",
  "webpack-cli": "^3.3.11",
  "webpack-stream": "^5.2.1"
  .......
 }
}
  今回はサンプルとして下記のようなファイル・ディレクトリの構成を用意しています。ソースファイルと出力用ファイルのディレクトリをそれぞれ分けておきます。そしてwebpackの設定ファイルである「webpack.config.js」とTypeScriptの設定ファイルである「tsconfig.json」そしてGulpのタスクを登録する「gulpfile.js」も用意していきます。
node_modules
dist
  ┣ (main.js)
  ┗ index.html
src
  ┣ index.ts
  ┗ modules
    ┗ module.ts
webpack.config.js
tsconfig.json
gulpfile.js
  まずは、webpackの設定ファイルを見ていきます。こちらもTypeScriptのコンパイルに合わせた内容で問題ありません。TypeScriptのコンパイルに必要な設定を適宜行なっていきます。詳しくはこちらの記事「webpackでTypeScriptの自動コンパイル環境を作成してみる」もご参考ください。 【webpack.config.js】
module.exports = {
 mode: 'development',
 entry: './src/index.ts',
 output: {
  path: `${__dirname}/dist`,
  filename: 'main.js'
 },
 module: {
  rules: [
   {
    test: /.ts$/,
    use: 'ts-loader'
   }
  ]
 },
 resolve: {
  extensions: [
   '.ts', '.js'
  ]
 }
}
  続けて、TypeScriptの設定ファイルも作成していきます。こちらも同じく必要な設定を適宜行なっていきます。webpackの設定ファイル同様、こちらの記事「TypeScriptの導入・コンパイルと設定ファイルtsconfig.jsonを触ってみる」でもまとめていますのでご参考に。 【tsconfig.json】
{
 "include": [
  "src/**/*"
 ],
 "exclude": [
  "node_modules"
 ],
 "compilerOptions": {
  "incremental": true, 
  "target": "ES5",
  "module": "es2015", 
  "sourceMap": true, 
  "removeComments": true,
  "strict": true
 }
}
  最後に、今回の本題であるGulpのタスクを作成していきます。Gulpではbrowsersyncを使った自動リロードとローカルサーバー、そしてwebpackのビルド実行をタスク化していきます。Gulpでwebpackのコマンドを実行する際には「webpack-stream」というパッケージを使うことになります。そしてその中で、webpackの設定ファイルを参照することで、設定した内容でビルドできるようになります。 【gulpfile.js】
const { src, dest, watch, parallel } = require("gulp"),
 browsersync = require('browser-sync').create(),
 webpackStream = require('webpack-stream'),
 webpackConfig = require('./webpack.config.js'),
 webpack = require('webpack');

// Local server & Browser sync
const taskServer = (done) => {
 browsersync.init({
  server: {
   baseDir: 'dist/',
   index: 'index.html'
  },
  port: 2000
 })
 done();
};
const taskReload = (done) => {
 browsersync.reload();
 done();
};

// webpack & TypeScript
const taskTs = () => 
 webpackStream(webpackConfig, webpack)
  .pipe(dest('dist/assets/js'));

// Wacth tasks
const taskWatch = (done) => {
 watch('dist/**/*', taskReload);
 watch('src/**/*.ts', taskTs);
 done();
}

exports.server = taskServer;
exports.ts = taskTs;

exports.default = parallel(taskServer, taskWatch);
  もちろんGulp側ではwebpackのビルドタスク実行だけでなく、監視タスクも用意しておきます。こうすることでTypeScriptファイルが編集され保存したタイミングでビルドとブラウザの自動リロードが実行されるようになります。   最後にサンプルのTypeScriptファイルを作成していきます。今回もモジュールとして読み込むスクリプトも用意しています。 【src/index.ts】
import moduleFunction from './modules/module';

console.log(moduleFunction('Hello World!'));
  【src/modules/module.ts】
export default function moduleFunction(message: string): string {
 return message;
}
  これでGulp経由でwebpackを使ったTypeScriptのコンパイル環境が出来上がりました。Gulpのタスクを下記のコマンドで実行してみます。
$ npm run dev
  問題なくビルドされると、ブラウザが自動でリロードされますので、TypeScriptで書いた処理をコンソールを見てみますと、実行されているのが確認できますね。 【console】
Hello World!
 
  今回はGulpとwebpackそしてTypeScriptを組み合わせた環境構築を行なってみました。webpackはどちらかというとスクリプトファイルなどのバンドルが主な目的のため、タスク化してGulpなどのタスクランナーで管理するのが使いやすいのではないでしょうか。いろんなツールがありますが長所に合わせて使い分けていきたいですね。   (参考にさせて頂いたサイト) TypeScript+Gulp+Webpack+jQueryで開発環境を構築
XでシェアLINEで送るはてブに追加

この記事を書いた人オガワ シンヤ

合同会社デザインサプライ代表兼CEO / ディレクター・ウェブデザイナー・フロントエンドエンジニアをやっています。「ウェブとデザインでヒト・モノ・サービスを繋げ新しい価値を生み出す」をコンセプトに日々奮闘中!制作中はダイエットコーラとチョコレートが欠かせないアラフォーWebクリエイター。

Sponsored Link

  • Showcase
  • Startify UI
  • Functional Gradation Generator
  • Coloooors

keyword search

categories

  • WordPress(61)
  • JavaScript(49)
  • Vue.js(48)
  • CSS(46)
  • jQuery(34)
  • Nuxt.js(22)
  • Sass(21)
  • Gulp(17)
  • webpack(16)
  • PHP(14)
  • HTML(14)
  • GSAP(11)
  • React(10)
  • Vite(9)
  • Pug(9)
  • Laravel(8)
  • Cordova(8)
  • Linux(7)
  • Next.js(6)
  • Apache(5)
  • Shopify(4)
  • REST API(4)
  • Node.js(4)
  • Smarty(3)
  • Git(3)
  • JSON(3)
  • その他プログラミング(3)
  • Google Apps API(3)
  • Bootstrap(3)
  • 環境構築・システム(3)
  • TypeScript(2)
  • EJS(2)
  • RMS(2)
  • Docker(2)
  • Instagram API(2)
  • Excel VBA(2)
  • SVG(1)
  • Dart(1)
  • ECカートASP(1)
  • Markdown(1)
  • AMP(1)
  • Nginx(1)
  • XML(1)
  • shellscript(1)
  • Ruby(1)
  • MySQL(1)

recent articles

  • Next.jsとWordPressでヘッドレスCMSのサイトを作成する#6:PWA対応とビルド時のエラー
    read more

    Next.jsとWordPressでヘッドレスCMSのサイトを作成する#6:PWA対応とビルド時のエラー

    2024.12.25/Next.js
  • Next.jsとWordPressでヘッドレスCMSのサイトを作成する#5:アナリティクス・アドセンスの導入とサイトマップ作成
    read more

    Next.jsとWordPressでヘッドレスCMSのサイトを作成する#5:アナリティクス・アドセンスの導入とサイトマップ作成

    2024.08.26/Next.js
  • Next.jsとWordPressでヘッドレスCMSのサイトを作成する#4:静的・動的ルーティングとページ作成
    read more

    Next.jsとWordPressでヘッドレスCMSのサイトを作成する#4:静的・動的ルーティングとページ作成

    2024.07.31/Next.js
  • Next.jsとWordPressでヘッドレスCMSのサイトを作成する#3:メタ情報設定・ファイル最適化・ステート管理
    read more

    Next.jsとWordPressでヘッドレスCMSのサイトを作成する#3:メタ情報設定・ファイル最適化・ステート管理

    2024.06.30/Next.js
  • Next.jsとWordPressでヘッドレスCMSのサイトを作成する#2:コーディング環境の構築
    read more

    Next.jsとWordPressでヘッドレスCMSのサイトを作成する#2:コーディング環境の構築

    2024.05.29/Next.js
  • Next.jsとWordPressでヘッドレスCMSのサイトを作成する#1:インストール・導入
    read more

    Next.jsとWordPressでヘッドレスCMSのサイトを作成する#1:インストール・導入

    2024.04.30/Next.js
  • 次の記事
  • 一覧に戻る
  • 前の記事

まだ依頼内容が決まっていなくても、ご相談ください。

課題の整理や小さな検証、UI/UX・フロントエンドの部分的な支援から始められます。

お問い合わせやご相談はこちらから

Webサイト・プロダクトの企画設計/UI・UXデザイン/フロントエンド開発合同会社デザインサプライ(DesignSupply. LLC)

Office:大阪府大阪市天王寺区清水谷町3-22
Email:info@designsupply-web.com
home
  • サイトトップ
about
  • 3つのポリシー
  • 経営理念
  • 代表・クリエイター紹介
  • 会社概要
services
  • ビジネス・プロダクト支援
  • UI/UX・フロントエンド開発支援
  • プロジェクトの進め方・支援体制
  • エデュケーション事業
works
  • 開発プロジェクト支援
  • クリエイティブ制作
  • 自社プロダクト
media
  • デザイン
  • プログラミング
  • マーケティング
  • Web開発
  • 写真・動画制作
contact
  • お問い合わせ
news
  • インフォメーション
privacy
  • プライバシーポリシー

WE THINK WITH YOU, DESIGN FOR PEOPLE, AND BUILD WHAT WORKS.

WE THINK WITH YOU, DESIGN FOR PEOPLE, AND BUILD WHAT WORKS.

© 2013 - 2026 DesignSupply.LLC
サイトトップへ
contact