Сборка проекта с использованием webpack

Создаю web-проект на TS, структура приложения следующая: в корне есть папка src в которой находятся подпапки client, server. Каждая из них несет в себе соответствующие файлы. Проект хочу запускать одной командой, сейчас использую concurrently.

Подключил и настроил webpack и babel, однако возникли вопросы по их применению:

  1. Если создать 2 конфига и запускать их через concurrently будет ли всё работать в том числе горячая перезагрузка? Как написать такие конфиги? Мой используемый вариант ниже
  2. При сборке наименования будут кешероваться. Смогут ли части приложения общаться друг с другом?
  3. Как запустить такое собранное приложение командой?

webpack.config.cjs, так как использую "type": "module"

const path = require('path');
// eslint-disable-next-line import/no-extraneous-dependencies
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
// eslint-disable-next-line import/no-extraneous-dependencies
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');

module.exports = {
  devtool: 'source-map',
  entry: './src/server/app.ts',
  output: {
    path: path.resolve(__dirname, 'build'),
    filename: 'bundle.js',
  },
  mode: 'development',
  resolve: {
    extensions: ['.ts', '.tsx', '.js'],
  },
  module: {
    rules: [{
        test: /\.tsx?$/,
        use: 'ts-loader',
        exclude: /node_modules/,
      },
      {
        test: /\.jsx?$/,
        use: 'babel-loader',
        include: `${__dirname}/src`,
      },
      {
        test: /\.css/,
        use: [
          MiniCssExtractPlugin.loader,
          {
            loader: 'css-loader',
            options: {
              esModule: true,
              sourceMap: true,
              modules: {
                localIdentName: '[path][name]__[local]--[hash:base64:5]',
              },
            },
          },
        ],
      },
    ],
  },
  optimization: {
    minimize: true,
    minimizer: [
      new CssMinimizerPlugin({
        minimizerOptions: {
          preset: [
            'default',
            {
              discardComments: {
                removeAll: true
              },
            },
          ],
        },
      }),
    ],
  },
  plugins: [new MiniCssExtractPlugin()],
};

При сборке, используя текущий конфиг, получаю пару файлов но они бесполезные, нерабочие. Понимаю это потому что в проекте использую express и postgresql и без node скомпилированные файлы бесполезны.

Возможно я где-то не прав или недостаточно точен в формулировках, поэтому готов дополнить вопрос


Ответы (0 шт):