Skip to content
Snippets Groups Projects
app.config.react.js 1.36 KiB
Newer Older
Hugo NOUTS's avatar
Hugo NOUTS committed
'use strict'

/**
 * This file overrides the default react webpack config.
 * This react config enables the use of TypeScript.
 *
 * @override node_modules/cozy-scripts/config/webpack.config.react.js
 */

const webpack = require('webpack')
const { useHotReload } = require('cozy-scripts/config/webpack.vars')
const CTS = require('cozy-scripts/utils/constants.js')
const babelConf = require('./babel.config')

process.env[CTS.ENTRY_EXT] = '.tsx' // Replaces .jsx

module.exports = {
  resolve: {
    extensions: ['.jsx', '.tsx', '.ts', '.scss'], // Add TS extensions
  },
  module: {
    rules: [
      {
        test: /\.(ts|js)x?$/, // Add TS extensions
        exclude: /node_modules\/(?!(cozy-ui))/,
        loader: require.resolve('cozy-scripts/node_modules/babel-loader'), // Add full path
        options: {
          cacheDirectory: 'node_modules/.cache/babel-loader/react',
          presets: babelConf.presets,
          plugins: useHotReload ? babelConf.plugins : [],
        },
      },
      {
        test: /\.scss$/,
        loaders: [
          require.resolve('style-loader'),
          require.resolve('css-loader'),
          require.resolve('sass-loader'),
        ],
      },
    ],
  },
  // Necessary for cozy-ui during Preact -> React apps transition
  plugins: [
    new webpack.DefinePlugin({
      'process.env': {
        USE_REACT: 'true',
      },
    }),
  ],
}