Skip to content
Snippets Groups Projects
app.config.react.js 1.36 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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',
          },
        }),
      ],
    }