Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
'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',
},
}),
],
}