16
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Webpack・TypeScript入門

Posted at

この記事のターゲット

  • Webpackってよく聞く
  • TypeScriptが良いっていろんなところで言ってる
  • バニラJSはある程度わかる

Webpackとは

誤解を恐れずに言えば複数のファイルを一つにまとめるツール。
これによって管理しやすい形に分割されたJSファイルやCSSファイルをリリース時には一つにまとめてローディングの負荷を下げることができる。
また、後述のTypeScriptをファイルをまとめるついでにJavascriptにトランスパイルすることもできる。
https://webpack.js.org/

こちらが詳しいです。
【5分でなんとなく理解!】Webpack入門

TypeScriptとは

Javascriptに型の概念を追加するJavascript拡張。
これによってエディターが静的に構文解析して事前にエラーを検知してくれる。
また、他人が作った関数やclassも型の情報を表示してくれたりするのでメンテナンス性が向上する。
https://www.typescriptlang.org/

詳しくはこちら
TypeScriptの型入門

さっそく使うよ

npmの導入

WebpackとTypescriptの導入にnpmを利用するので入ってない方はinstallしてください。

以下参照。
Node.js / npm をインストール (Mac環境)

Webpack導入

ディレクトリを作ってwebpackを入れましょう。


# ディレクトリ作成
mkdir my-project
cd my-project

# npm プロジェクト初期化
npm init -y

# webpack install
npm install webpack webpack-cli --save-dev

TypeScript導入

先ほど作ったディレクトリでTypescriptを入れます。
webpackからTyepscriptをトランスパイルするためにwebpackのプラグインであるts-loaderもinstallします。


# typescript install
npm install typescript ts-loader --save-dev

Webpackの設定

webpackの設定を書きます。
設定ファイルを新規作成して中身を書きましょう。

touch webpack.config.js

module.exports = {
  mode: 'development',
  entry: './index.ts', //ファイルをまとめる際のエントリーポイント
  output: {
    path: __dirname,
    filename: 'bundle.js' //まとめた結果出力されるファイル名
  },
  resolve: {
    extensions: ['.ts', '.js'] //拡張子がtsだったらTypescirptでコンパイルする
  },
  module: {
    rules: [
      {
        test: /\.ts$/,
        loader: 'ts-loader' //ts-loader使うよ
      }
    ]
  }
}

TypeScriptの設定

Typescriptの設定を書きます。
これまた設定ファイルを新規作成して中身を書きます。

touch tsconfig.json
{
  "compilerOptions": {
    "target": "esnext", #esnextに変換する
    "module": "commonjs", #commonjs方式のモジュールシステム(import/export)を使う
    "noImplicitAny": true, #TypeScriptでは型定義がない変数はany型になる(暗黙のany型)のでこれを禁止する
  }
}

TypeScript書いてみる

webpackの設定でindex.tsから読みこむことにしたので同じ名前でファイルを作って適当にサンプルをかいてみます。

touch index.ts

const sayHello = (name: string) : string => {
  return `Hello ${name}!`
}

console.log(sayHello('TS!'))

関数の引数と戻り値にstringを明示しました。
呼び出し側でnumberを入れたりすると怒られるはず。

いざコンパイル

webpackのコマンドを呼ぶためにpackage.jsonのscriptsにちょろっと書きましょう。
(package.jsonに書くとnode_mudulesにパスが通っているので呼び出しやすい)

  "scripts": {
    "start": "webpack --watch"
  },

それではいざコンパイル。

npm start

bundle.jsというファイルが吐き出されて入れば成功!

まとめ

正直なところ、webpackやtypescriptの設定は種類が多すぎて全然わかってないです。
とはいえとりあえず一度動かしてみたという経験は大きな糧になるはず!
まずは小さく導入して少しずつ学んで行きましょう。

16
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?