HappyPack doesn't like 0 threads in config Change-Id: I752a575142ca2844474291f2d8620a85566508b8
		
			
				
	
	
		
			144 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// Copyright 2021 99cloud
 | 
						|
//
 | 
						|
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
// you may not use this file except in compliance with the License.
 | 
						|
// You may obtain a copy of the License at
 | 
						|
//
 | 
						|
//     http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
//
 | 
						|
// Unless required by applicable law or agreed to in writing, software
 | 
						|
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
// See the License for the specific language governing permissions and
 | 
						|
// limitations under the License.
 | 
						|
 | 
						|
const webpack = require('webpack');
 | 
						|
const { normalize, resolve } = require('path');
 | 
						|
// const path = require("path");
 | 
						|
// const CleanWebpackPlugin = require('clean-webpack-plugin');
 | 
						|
const HappyPack = require('happypack');
 | 
						|
const os = require('os');
 | 
						|
const moment = require('moment');
 | 
						|
 | 
						|
const root = (path) => resolve(__dirname, `../${path}`);
 | 
						|
const version = moment().unix();
 | 
						|
 | 
						|
module.exports = {
 | 
						|
  module: {
 | 
						|
    rules: [
 | 
						|
      {
 | 
						|
        test: /\.jsx?$/,
 | 
						|
        include: [root('src'), root('common')],
 | 
						|
        use: 'happypack/loader?id=jsx',
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.jsx?$/,
 | 
						|
        include: root('node_modules'),
 | 
						|
        use: 'cache-loader',
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.js$/,
 | 
						|
        exclude: /node_modules/,
 | 
						|
        use: {
 | 
						|
          loader: 'babel-loader',
 | 
						|
        },
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.(png|gif|jpg)$/,
 | 
						|
        use: [
 | 
						|
          {
 | 
						|
            loader: 'url-loader',
 | 
						|
            options: {
 | 
						|
              limit: 10240,
 | 
						|
              name: normalize(`asset/image/[name].${version}.[ext]`),
 | 
						|
            },
 | 
						|
          },
 | 
						|
        ],
 | 
						|
        exclude: [
 | 
						|
          root('src/asset/image/logo.png'),
 | 
						|
          root('src/asset/image/loginRightLogo.png'),
 | 
						|
        ],
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.(png|gif|jpg)$/,
 | 
						|
        use: [
 | 
						|
          {
 | 
						|
            loader: 'url-loader',
 | 
						|
            options: {
 | 
						|
              limit: false,
 | 
						|
              name: normalize('asset/image/[name].[ext]'),
 | 
						|
            },
 | 
						|
          },
 | 
						|
        ],
 | 
						|
        include: [
 | 
						|
          root('src/asset/image/logo.png'),
 | 
						|
          root('src/asset/image/loginRightLogo.png'),
 | 
						|
        ],
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.svg$/,
 | 
						|
        use: [
 | 
						|
          {
 | 
						|
            loader: 'url-loader',
 | 
						|
            options: {
 | 
						|
              limit: false,
 | 
						|
              name: normalize('asset/image/[name].[ext]'),
 | 
						|
            },
 | 
						|
          },
 | 
						|
        ],
 | 
						|
        include: [
 | 
						|
          root('src/asset/image/logo-small.svg'),
 | 
						|
          root('src/asset/image/logo-extend.svg'),
 | 
						|
        ],
 | 
						|
      },
 | 
						|
      {
 | 
						|
        test: /\.(woff|woff2|ttf|eot|svg)$/,
 | 
						|
        use: [
 | 
						|
          {
 | 
						|
            loader: 'url-loader',
 | 
						|
            options: {
 | 
						|
              limit: 10240,
 | 
						|
              name: normalize(`asset/image/[name].${version}.[ext]`),
 | 
						|
            },
 | 
						|
          },
 | 
						|
        ],
 | 
						|
        exclude: [
 | 
						|
          root('src/asset/image/logo-small.svg'),
 | 
						|
          root('src/asset/image/logo-extend.svg'),
 | 
						|
        ],
 | 
						|
      },
 | 
						|
    ],
 | 
						|
  },
 | 
						|
  resolve: {
 | 
						|
    extensions: ['.js', '.jsx'],
 | 
						|
    modules: [root('src'), root('src/pages'), 'node_modules'],
 | 
						|
    alias: {
 | 
						|
      '@': root('src'),
 | 
						|
      src: root('src'),
 | 
						|
      asset: root('src/asset'),
 | 
						|
      image: root('src/asset/image'),
 | 
						|
      core: root('src/core'),
 | 
						|
      containers: root('src/containers'),
 | 
						|
      layouts: root('src/layouts'),
 | 
						|
      components: root('src/components'),
 | 
						|
      pages: root('src/pages'),
 | 
						|
      utils: root('src/utils'),
 | 
						|
      stores: root('src/stores'),
 | 
						|
      locales: root('src/locales'),
 | 
						|
      styles: root('src/styles'),
 | 
						|
      resources: root('src/resources'),
 | 
						|
      client: root('src/client'),
 | 
						|
    },
 | 
						|
  },
 | 
						|
  plugins: [
 | 
						|
    new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
 | 
						|
    new HappyPack({
 | 
						|
      threads: os.cpus().length - 1 || 1,
 | 
						|
      id: 'jsx',
 | 
						|
      loaders: ['babel-loader?cacheDirectory'],
 | 
						|
    }),
 | 
						|
  ],
 | 
						|
};
 | 
						|
 | 
						|
module.exports.version = version;
 |