Добавьте node_modules в каталог сборки машинописи - PullRequest
0 голосов
/ 29 сентября 2019

webpack.config.js

const path = require('path')

module.exports = {
  context: __dirname,
  entry: [
    'babel-polyfill',
    './server.js',
  ],
  devtool: 'source-map',
  target: 'node',
  output: {
    path: path.join(__dirname, '/build'),
    filename: 'server.js',
    library: 'server',
    libraryTarget: 'umd',
    umdNamedDefine: true,
  },
  externals: nodeModules,
  module: {
    rules: [
      { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader' },
      { test: /\.js$/, exclude: /node_modules/, loader: 'eslint-loader', options: {}},
    ],
  },
  performance: {
    hints: 'warning',
  },
  plugins: [],
  resolve: {
    modules: [
      './node_modules',
      path.resolve(__dirname),
    ],
  },
  node: {
    fs: 'empty',
  },
}

С помощью вышеуказанного файла конфигурации webpack я могу создать простой сервер nodejs ... на выходе будет один файл server.js, который включает все импортированные модули node_modules ..поэтому для развертывания в производство мне нужно всего лишь отправить один файл, около 2-4 МБ в зависимости от микро-службы.

Я перехожу на машинописный текст ... но как я могу получить тот же результат?В Typescript он, по сути, копирует структуру файлов машинописного текста в папку сборки и затем мигрирует в файлы javascript в нужной «цели»:

tsconfig.json

{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "ES2017",
    "moduleResolution": "node",
    "outDir": "build",
    "baseUrl": "./",
    "sourceMap": true,
    "resolveJsonModule": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "paths": {
      "@constants": [
        "src/constants"
      ],
      "@database": [
        "src/database"
      ],
      "@domains": [
        "src/domains"
      ],
      "@http": [
        "src/http"
      ],
      "@services": [
        "src/services"
      ],
      "@utils": [
        "src/utils"
      ],
      "@/*": [
        "src/*"
      ]
    },
    "plugins": [
      {
        "transform": "@zerollup/ts-transform-paths",
        "exclude": ["*"]
      }
    ]
  },
  "exclude": [
    "package.json"
  ]
}

Лучше всего, 1-й конвейер к коду es, затем запустите webpack для этого, чтобы создать единую папку сборки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...