bootstrap_italia-8.x-0.x-dev/var/starter_kits/italiagov/webpack.common.js

var/starter_kits/italiagov/webpack.common.js
import fs from 'fs/promises';
import MiniCssExtractPlugin from 'mini-css-extract-plugin';
import CopyWebpackPlugin from 'copy-webpack-plugin';
import SvgChunkWebpackPlugin from 'svg-chunk-webpack-plugin';
import paths from './webpack.paths.js';
import semver from 'semver';
import packageJson from './package.json' assert { type: 'json' };

if (!semver.satisfies(process.version, packageJson.engines.node)) {
  throw new Error(`The current Node.js version (${process.version}) does not satisfy the required version (${packageJson.engines.node}).`);
}

export default {
  // Entry
  entry: {
    "bootstrap-italia": [`${paths.src}/js/index.js`, `${paths.src}/scss/theme.scss`],
    //"ckeditor5": `${paths.src}/scss/ckeditor5.scss`,
  },

  // Output
  output: {
    path: paths.build,
    filename: "js/[name].min.js",
  },

  module: {
    rules: [
      {
        test: /\.svg$/,
        include: [
          `${paths.modules}/bootstrap-italia/src/svg`,
          `${paths.src}/svg`,
        ],
        use: [
          {
            loader: SvgChunkWebpackPlugin.loader,
          },
        ],
      },
    ],
  },

  plugins: [
    new MiniCssExtractPlugin({
      filename: 'css/[name].min.css',
      chunkFilename: 'css/[id].min.css',
    }),
    new SvgChunkWebpackPlugin({
      filename: 'svg/sprites.svg',
      svgstoreConfig: {
        svgAttrs: {
          'xmlns': 'http://www.w3.org/2000/svg',
        }
      }
    }),
    new CopyWebpackPlugin({
      patterns: [
        {
          from: `${paths.modules}/bootstrap-italia/src/assets/`,
          to: `${paths.build}/assets/`,
        },
        {
          from: `${paths.modules}/bootstrap-italia/src/fonts/`,
          to: `${paths.build}/fonts/`,
        },
        {
          from: './src/images/',
          to: `${paths.build}/images/`,
        },
      ],
    }),
    {
      apply: (compiler) => {
        compiler.hooks.afterEmit.tapPromise('AfterEmitPlugin', async (compilation) => {
          const ckeditorJsFile = `${compiler.options.output.path}/js/ckeditor5.min.js`;
          try {
            await fs.rm(ckeditorJsFile, { force: true });
          } catch (err) {
            console.error('Error deleting ckeditor5.min.js:', err);
          }
        });
      },
    },
  ],
};

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc