Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16794 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

const path = require('path')
const isDevelopment = process.env.NODE_ENV === 'development'
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const TerserPlugin = require('terser-webpack-plugin')

// Add paths while bundling
const paths = {
  menu: {
    entry: './react-webpack/menu/index.js',
    output: path.join(__dirname, 'public/react-bundles/menu'),
    filename: 'menuBundle.js'
  },
  companySizes: {
    entry: './react-webpack/settings/company-sizes/index.js',
    output: path.join(__dirname, 'public/react-bundles/settings/company-sizes'),
    filename: 'companySizesBundle.js'
  },
  hobbies: {
    entry: './react-webpack/settings/hobbies-and-interests/index.js',
    output: path.join(
      __dirname,
      'public/react-bundles/settings/hobbies-and-interests'
    ),
    filename: 'hobbiesAndInterestsBundle.js'
  },
  aptitudes: {
    entry: './react-webpack/settings/aptitudes/index.js',
    output: path.join(__dirname, 'public/react-bundles/settings/aptitudes'),
    filename: 'aptitudesBundle.js'
  },
  competencyTypes: {
    entry: './react-webpack/settings/competency-types/index.js',
    output: path.join(
      __dirname,
      'public/react-bundles/settings/competency-types'
    ),
    filename: 'competencyTypesBundle.js'
  },
  groupTypes: {
    entry: './react-webpack/settings/groups-types/index.js',
    output: path.join(__dirname, 'public/react-bundles/settings/group-types'),
    filename: 'groupTypesBundle.js'
  },
  industries: {
    entry: './react-webpack/settings/industries/index.js',
    output: path.join(__dirname, 'public/react-bundles/settings/industries'),
    filename: 'industriesBundle.js'
  },
  skills: {
    entry: './react-webpack/settings/skills/index.js',
    output: path.join(__dirname, 'public/react-bundles/settings/skills'),
    filename: 'skillsBundle.js'
  },
  degrees: {
    entry: './react-webpack/settings/degrees/index.js',
    output: path.join(__dirname, 'public/react-bundles/settings/degrees'),
    filename: 'degreesBundle.js'
  },
  categories: {
    entry: './react-webpack/settings/job-categories/index.js',
    output: path.join(
      __dirname,
      'public/react-bundles/settings/job-categories'
    ),
    filename: 'jobCategoriesBundle.js'
  },
  aptitudes: {
    entry: './react-webpack/settings/aptitudes/index.js',
    output: path.join(__dirname, 'public/react-bundles/settings/aptitudes'),
    filename: 'aptitudesBundle.js'
  },
  hobbiesAndInterests: {
    entry: './react-webpack/settings/hobbies-and-interests/index.js',
    output: path.join(
      __dirname,
      'public/react-bundles/settings/hobbies-and-interests'
    ),
    filename: 'hobbiesAndInterestsBundle.js'
  },
  profile: {
    entry: './react-webpack/profile/index.js',
    output: path.join(__dirname, 'public/react-bundles/profile'),
    filename: 'profileBundle.js'
  },
  jobs: {
    entry: './react-webpack/jobs/index.js',
    output: path.join(__dirname, 'public/react-bundles/jobs'),
    filename: 'jobsBundle.js'
  },
  feeds: {
    entry: './react-webpack/feeds/index.js',
    output: path.join(__dirname, 'public/react-bundles/feeds'),
    filename: 'feedsBundle.js'
  },
  followers: {
    entry: './react-webpack/follower/index.js',
    output: path.join(__dirname, 'public/react-bundles/followers'),
    filename: 'followersBundle.js'
  },
  recruitment_and_selection_vacancies: {
    entry: './react-webpack/recruitment_and_selection/vacancies/index.js',
    output: path.join(
      __dirname,
      'public/react-bundles/recruitment_and_selection/vacancies'
    ),
    filename: 'vacanciesBundle.js'
  },
  recruitment_and_selection_candidates: {
    entry: './react-webpack/recruitment_and_selection/candidates/index.js',
    output: path.join(
      __dirname,
      'public/react-bundles/recruitment_and_selection/candidates'
    ),
    filename: 'candidatesBundle.js'
  },
  recruitment_and_selection_interviews: {
    entry: './react-webpack/recruitment_and_selection/interviews/index.js',
    output: path.join(
      __dirname,
      'public/react-bundles/recruitment_and_selection/interviews'
    ),
    filename: 'interviewsBundle.js'
  },
  chat: {
    entry: './react-webpack/chat/index.js',
    output: path.join(__dirname, 'public/react-bundles/chat'),
    filename: 'chatBundle.js'
  },
  mobileChat: {
    entry: './react-webpack/mobile-chat/index.js',
    output: path.join(__dirname, 'public/react-bundles/mobileChat'),
    filename: 'mobileChatBundle.js'
  },
  objetives_and_goals_planing: {
    objetives: {
      entry: './react-webpack/objetives_and_goals-planing/objetives/index.js',
      output: path.join(
        __dirname,
        'public/react-bundles/objetives_and_goals-planing/objetives'
      ),
      filename: 'objetivesBundle.js'
    },
    goals: {
      entry: './react-webpack/objetives_and_goals-planing/goals/index.js',
      output: path.join(
        __dirname,
        'public/react-bundles/objetives_and_goals-planing/goals'
      ),
      filename: 'goalsBundle.js'
    },
    tasks: {
      entry: './react-webpack/objetives_and_goals-planing/tasks/index.js',
      output: path.join(
        __dirname,
        'public/react-bundles/objetives_and_goals-planing/tasks'
      ),
      filename: 'tasksBundle.js'
    }
  },
  performance_evaluations: {
    forms: {
      entry: './react-webpack/performance_evaluations/forms/index.js',
      output: path.join(
        __dirname,
        'public/react-bundles/performance_evaluations/forms'
      ),
      filename: 'formsBundle.js'
    },
    evaluations: {
      entry: './react-webpack/performance_evaluations/evaluations/index.js',
      output: path.join(
        __dirname,
        'public/react-bundles/performance_evaluations/evaluations'
      ),
      filename: 'evaluationsBundle.js'
    }
  },
  organizational_climate: {
    forms: {
      entry: './react-webpack/organizational-climate/form/index.js',
      output: path.join(
        __dirname,
        'public/react-bundles/organizational-climate/form'
      ),
      filename: 'organizationalFormBundle.js'
    }
  },
  jobDescription: {
    entry: './react-webpack/job_description/index.js',
    output: path.join(__dirname, 'public/react-bundles/job_description'),
    filename: 'jobDescription.js'
  }
}

// change active path here
const currentPath = paths.feeds

module.exports = {
  entry: currentPath.entry,
  output: {
    path: currentPath.output,
    filename: currentPath.filename
  },
  watch: isDevelopment ? true : false,
  mode: isDevelopment ? 'development' : 'production',
  resolve: {
    extensions: ['.js', '.jsx', '.scss']
  },
  module: {
    rules: [
      {
        test: /(js|jsx)$/,
        use: ['babel-loader'],
        exclude: /node_modules/
      },
      {
        test: /\.css$/i,
        use: [MiniCssExtractPlugin.loader, 'css-loader']
      },
      {
        test: /\.module\.s(a|c)ss$/,
        use: [
          MiniCssExtractPlugin.loader,
          {
            loader: 'css-loader',
            options: {
              modules: {
                localIdentName: '[local]--[hash:base64:5]'
              },
              sourceMap: isDevelopment
            }
          },
          {
            loader: 'sass-loader',
            options: {
              sourceMap: isDevelopment
            }
          }
        ]
      },
      {
        test: /\.s(a|c)ss$/,
        exclude: /\.module.(s(a|c)ss)$/,
        use: [
          MiniCssExtractPlugin.loader,
          'css-loader',
          {
            loader: 'sass-loader',
            options: {
              sourceMap: isDevelopment
            }
          }
        ]
      }
    ]
  },
  plugins: [
    new MiniCssExtractPlugin({
      filename: '[name].css',
      chunkFilename: '[id].css'
    })
  ],
  optimization: {
    minimizer: [
      new TerserPlugin({
        extractComments: false
      })
    ]
  }
}