CartoDB/cartodb20

View on GitHub
vue.config.js

Summary

Maintainability
A
0 mins
Test Coverage
const webpack = require('webpack');
const path = require('path');
const { http_path_prefix } = require(`./config/grunt_${process.env.NODE_ENV}.json`);
const { version } = require('./package.json');

module.exports = {
  runtimeCompiler: true,
  transpileDependencies: ['@mapbox/martini', 'd3-array', 'd3-scale'],
  publicPath: '/spatial-data-catalog/browser/',
  outputDir: path.resolve(__dirname, `public/assets/${version}/javascripts`),
  configureWebpack: {
    resolve: {
      alias: {
        'do-catalog': path.resolve(__dirname, 'lib/assets/javascripts/do-catalog/'),
        'tilesets-viewer': path.resolve(__dirname, 'lib/assets/javascripts/tilesets-viewer/'),
        'new-dashboard': path.resolve(__dirname, 'lib/assets/javascripts/new-dashboard/')
      },
      extensions: ['.js', '.vue', '.json', '.scss']
    },
    performance: {
      maxEntrypointSize: 2048000,
      maxAssetSize: 2048000
    },
    module: {
      rules: [
        {
          test: /\.vue$/,
          use: [
            {
              loader: 'vue-svg-inline-loader'
            }
          ]
        }
      ]
    },
    plugins: [
      new webpack.DefinePlugin({
        __ASSETS_DIR__: JSON.stringify(`${http_path_prefix}/assets/${version}`)
      })
    ]
  },
  css: {
    extract: false,
    loaderOptions: {
      scss: {
        data: "@import 'do-catalog/main.scss';"
      }
    }
  },
  chainWebpack: config => {
    config.module.rule('js')
      .use('babel-loader').loader('babel-loader');
    if (process.env.NODE_ENV === 'production') {
      config.module.rule('images').use('url-loader')
        .loader('file-loader')
        .tap(options => Object.assign(options, {
          name: '../images/do-catalog/[name].[hash:8].[ext]'
        }));
      config.module.rule('svg').use('file-loader')
        .tap(options => Object.assign(options, {
          name: '../images/do-catalog/[name].[hash:8].[ext]'
        }));
    }
  }
};