• 追加された行はこの色です。
  • 削除された行はこの色です。
#author("2019-04-23T14:24:47+09:00","default:ryuichi","ryuichi")
** NPM package.json初期化 [#xa85a3cd]
#author("2019-04-23T18:31:00+09:00","default:ryuichi","ryuichi")
* TypeScript + Express.js で Hello World [#vb3e1bbe]

** NPM package.json 初期化 [#xa85a3cd]

 npm init -y

** Webpack インストール [#y4ba9355]

*** Webpack関連のモジュールをインストールする [#c22abc26]

 npm install -D webpack webpack-cli '@webpack-cli/init'
 npm install -D webpack-node-externals
 npm install -D rimraf mkdirp
 npm install '@babel/core' '@babel/polyfill' '@babel/preset-env' babel-loader

- rimraf & mkdirp : https://stackoverflow.com/questions/41451884/how-to-run-rm-command-on-windows-10

*** webpack.config.jsを作る [#xe2b1cb1]

 vim webpack.config.js
 -----
  const path = require('path');
  
  module.exports = {
    target: 'node',
    mode: 'development',
    module: {
      rules: [
        {
          test: /\.js$/,
          exclude: /node_modules/,
          use: {
            loader: 'babel-loader',
            options: {
              presets: ['@babel/preset-env']
            }
          }
        }
    },
    resolve: {
      extensions: ['.js']
    },
    output: {
      filename: 'bundle.js',
      path: path.resolve(__dirname, 'dist')
    }
  };
 -----

 module.exports = {
     target: 'node',
     mode: 'development',
     entry: path.resolve(__dirname, 'src/app.js'),
     module: {
         rules: [
             {
                 test: /\.js$/,
                 exclude: /node_modules/,
                 use: {
                     loader: 'babel-loader',
                     options: {
                         presets: ['@babel/preset-env']
                     }
                 }
             },
         ]
     },
     resolve: {
         extensions: ['.js']
     },
     output: {
         filename: 'app.js',
         path: path.resolve(__dirname, 'dist')
     }
 };

- https://github.com/babel/babel-loader

** TypeScirpt インストール [#za569842]

*** TypeScript関連のモジュールをインストールする [#t46b33e5]

 npm add -D typescript ts-node @types/node core-js ts-loader
 npx tsc --init
 

*** WebpackでTSをビルドできるようにwebpack.config.jsを書く [#k7fe8348]

 vim webpack.config.js
 -----

   module: {
     rules: [
 +     {
 +       test: /\.tsx?$/,
 +       test: /\.ts$/,
 +       use: 'ts-loader',
 +       exclude: /node_modules/
 +     },
 
   resolve: {
 +   extensions: ['.ts', '.js']
   },
 -----

- https://github.com/TypeStrong/ts-loader#configuration

** Express.js インストール [#m81f1a3a]

 npm install express
 npm install -D '@types/express'

** Git リポジトリ初期化 [#ma4de9ef]

*** .gitignore を書く [#z4b5a828]

 vim .gitignore
 -----

 node_modules/
 package-lock.json
 -----
 

*** Gitリポジトリを作成して、初回コミットする [#v922660f]

 git init
 git add .
 git commit -m 'Initial commit'

** Express.js アプリケーション作成 [#x4d9b3df]

vim package.json
-----
  "scripts": {
+   "build": "rimraf ./dist && mkdirp ./dist && npx webpack",
+   "start": "node ./dist/bundle.js",
*** npmでビルドとアプリケーション起動できるようにする [#j7fecf0a]

 vim package.json
 -----
   "scripts": {
 +   "build": "rimraf ./dist && mkdirp ./dist && npx webpack",
 +   "start": "node ./dist/bundle.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
-----
   },
 -----

*** Express.js を使ったアプリケーションを書く [#v90da990]

 vim src/app.ts

 import express from 'express';
 
 const app = express();
 
 app.get('/', (req, res) => res.send('Hello World'));
 
 app.listen(3000, () => console.log('Example app listening on port 3000'));
 
 export default app;

** ビルドとアプリケーション起動 [#ceb56d46]

 npm run build
 npm run start

** 参考 [#p9096698]

https://github.com/yanoryuichi/TypeScript-Express-HelloWorld


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS