a12s-1.0.0-beta7/webpack.config.js

webpack.config.js
const path = require('path');
const TerserPlugin = require("terser-webpack-plugin");

const config = [];

function standaloneLibrary(src, subPath, defaultExport = false, externals = null) {
  const baseMapConfig = {
    entry: {},
    output: {
      path: path.resolve(__dirname),
      filename: '[name].js',
      library: ['A12s'],
      libraryTarget: 'umd',
      libraryExport: 'default',
    },
    optimization: {
      minimize: (process.env.NODE_ENV === 'production'),
    },
    devtool: 'source-map',
    module: {
      rules: [
        {
          test: /\.ts$/,
          exclude: /node_modules/,
          use: ['babel-loader', 'ts-loader']
        }
      ]
    },
    resolve: {
      extensions: ['.ts', '.js']
    },
  };

  baseMapConfig.entry[src] = path.resolve(__dirname, './' + src + '.ts');
  baseMapConfig.output.library = baseMapConfig.output.library.concat(subPath);

  if (defaultExport) {
    baseMapConfig.output.libraryExport = 'default';
  }

  if (externals) {
    baseMapConfig.externals = externals;
  }

  config.push(baseMapConfig);
}

standaloneLibrary('modules/theme_builder/js/components/disclosure', ['Disclosure'], true);

config.push({
  entry: {
    'modules/theme_builder/js/components/disclosure.accordion': path.resolve(__dirname, './modules/theme_builder/js/components/disclosure.accordion.ts'),
    'modules/theme_builder/js/components/disclosure.collapse': path.resolve(__dirname, './modules/theme_builder/js/components/disclosure.collapse.ts'),
    'modules/theme_builder/js/components/disclosure.tabs': path.resolve(__dirname, './modules/theme_builder/js/components/disclosure.tabs.ts'),
    'modules/theme_builder/js/form/floating-label': path.resolve(__dirname, './modules/theme_builder/js/form/floating-label.ts'),
  },
  output: {
    path: path.resolve(__dirname),
    filename: '[name].js'
  },
  optimization: {
    minimize: (process.env.NODE_ENV === 'production'),
    minimizer: [
      new TerserPlugin({
        terserOptions: {
          mangle: {
            reserved: ['Drupal']
          }
        }
      })
    ]
  },
  externals: {
    'once': 'window.once',
    'drupalSettings': 'window.drupalSettings',
    'Drupal': 'window.Drupal',
    'DrupalMap': 'window.DrupalMap',
  },
  devtool: 'source-map',
  module: {
    rules: [
      {
        test: /\.ts$/,
        exclude: /node_modules/,
        use: ['babel-loader', 'ts-loader']
      }
    ]
  },
  resolve: {
    extensions: ['.ts', '.js']
  },
});

module.exports = config;

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

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