Como customizar o Webpack

Você pode criar seu próprio webpack.config.js personalizado na pasta raiz do projeto para estender as configurações padrão do Nullstack

Nullstack expõe o arquivo nullstack/webpack.config.js que exporta uma função de servidor e cliente, cada uma sendo a configuração para o respectivo ambiente

Você pode importar a configuração do webpack do nullstack com o seguinte código

const [server, client] = require('nullstack/webpack.config');

module.exports = [server, client]

Você pode personalizar um único ambiente envolvendo a função de destino

const [server, client] = require('nullstack/webpack.config');

const glob = require('glob');
const PurgecssPlugin = require('purgecss-webpack-plugin');

function customClient(...args) {
  const config = client(...args);
  if (config.mode === 'production') {
    config.plugins.push(new PurgecssPlugin({
      paths: glob.sync(`src/**/*`, { nodir: true }),
      content: ['./**/*.njs'],
      safelist: ['script', 'body', 'html', 'style'],
      defaultExtractor: content => content.match(/[^<>"'`\s]*[^<>"'`\s:]/g) || [],
    }));
  }

  return config;
}

module.exports = [server, customClient]

Você também pode estender os dois ambientes ao mesmo tempo criando um wrapper em torno de ambos os ambientes

const [server, client] = require('nullstack/webpack.config');
const CadencePlugin = require('cadence-webpack-plugin');

function applyCadencePlugin(environments) {
  return environments.map((environment) => (...args) => {
    const config = environment(...args);
    config.plugins.push(new CadencePlugin())
    return config;
  })
}

module.exports = applyCadencePlugin([server, client])