Webpack - связать все модули узла кроме одного в угловой универсальный - PullRequest
0 голосов
/ 11 февраля 2019

Я сделал веб-приложение с угловым.Я хочу рендеринг на стороне сервера с Angular Universal.Лучший способ создать такой сервер - использовать веб-пакет, это стандартная конфигурация, которая работает в большинстве случаев:

const path = require('path');
const webpack = require('webpack');

module.exports = {
  entry: { server: './server.ts' },
  resolve: { extensions: ['.js', '.ts'] },
  target: 'node',
  externals: [/node_modules/],
  mode: 'none',
  // this makes sure we include node_modules and other 3rd party libraries
  output: {
    path: path.join(__dirname, 'dist'),
    filename: '[name].js'
  },
  module: {
    rules: [{ test: /\.ts$/, loader: 'ts-loader', exclude: /server-local/ }]
  },
  plugins: [
    // Temporary Fix for issue: https://github.com/angular/angular/issues/11580
    // for 'WARNING Critical dependency: the request of a dependency is an expression'
    new webpack.ContextReplacementPlugin(
      /(.+)?angular(\\|\/)core(.+)?/,
      path.join(__dirname, 'src'), // location of your src
      {} // a map of your routes
    ),
    new webpack.ContextReplacementPlugin(
      /(.+)?express(\\|\/)(.+)?/,
      path.join(__dirname, 'src'),
      {}
    )
  ]
};

Но у меня возникла проблема: я использую модуль узла pug-mailer вмой сервер, и он использует uglify-js в качестве зависимости, а не dev-зависимостей.Webpack не поддерживает объединение uglify-js, поэтому я нашел единственный способ решить эту проблему:

const nodeExternals = require('webpack-node-externals');

module.exports = {
  externals: [nodeExternals()],
  ... //the rest is unchanged
};

Но это не может быть принято: при этом все node_modules не объединяются, и я долженсохранить весь каталог node_modules на моем рабочем сервере.

Есть ли способ объединить все модули node_modules только в один файл, кроме uglify-js?

Результат, который я хочу получить, таков:

dist
----server.js //built with webpack, contains all node_modules except uglify-js
----other dists folder
node_modules
----uglify-js //Only this dependency in node_modules
...