webpack在nodejs中应用,支持es6语法及热加载

安装
npm i webpack webpack-cli @babel/core babel-loader @babel/preset-env @babel/node clean-webpack-plugin webpack-node-externals cross-env -D
webpack.config.js
const path = require('path')
const webpackNodeExternals = require('webpack-node-externals')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
const webpackConfig = {
  target: 'node',
  mode: 'development',
  devtool: 'eval-source-map',
  entry: {
    server: path.join(__dirname, 'src/index.js')
  },
  output: {
    path: path.join(__dirname, './dist'),
    filename: '[name].bundle.js'
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        use: {
          loader: 'babel-loader'
        },
        exclude: [path.join(__dirname, 'node_modules')]
      }
    ]
  },
  externals: [webpackNodeExternals()],
  plugins: [new CleanWebpackPlugin()],
  node: {
    console: false,
    global: true,
    process: true,
    __filename: 'mock',
    __dirname: 'mock',
    Buffer: true,
    setImmediate: true,
    path: true
  }
}

module.exports = webpackConfig

index.js
import path from 'path'
import Koa from 'koa'
import koaBody from 'koa-body'
import cors from '@koa/cors'
import koaJson from 'koa-json'
import helmet from 'koa-helmet'
import koaStatic from 'koa-static'

import router from './routes'

const app = new Koa()


app.use(koaStatic(path.join(__dirname, '../public')))
app.use(helmet())
app.use(koaBody())
app.use(cors())
app.use(koaJson())

app.use(router())
app.listen(9000)
console.log(2432)

.babelrc
{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": "current"
        }
      }
    ]
  ]
}
package.json
{
  "name": "koa-learn",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "nodemon --exec babel-node src/index.js"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/raind33/test-git2.git"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/raind33/test-git2/issues"
  },
  "homepage": "https://github.com/raind33/test-git2#readme",
  "dependencies": {
    "@koa/cors": "^3.0.0",
    "koa": "^2.11.0",
    "koa-body": "^4.1.1",
    "koa-combine-routers": "^4.0.2",
    "koa-helmet": "^5.2.0",
    "koa-json": "^2.0.2",
    "koa-router": "^7.4.0",
    "koa-static": "^5.0.0"
  },
  "devDependencies": {
    "@babel/core": "^7.7.4",
    "@babel/node": "^7.7.4",
    "@babel/preset-env": "^7.7.4",
    "babel-loader": "^8.0.6",
    "clean-webpack-plugin": "^3.0.0",
    "cross-env": "^6.0.3",
    "nodemon": "^2.0.1",
    "webpack": "^4.41.2",
    "webpack-cli": "^3.3.10",
    "webpack-node-externals": "^1.7.2"
  }
}

该项目github地址