Я сделал веб-приложение с угловым.Я хочу рендеринг на стороне сервера с 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