-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathcraco.config.js
More file actions
52 lines (48 loc) · 1.29 KB
/
craco.config.js
File metadata and controls
52 lines (48 loc) · 1.29 KB
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
52
const path = require('path');
const fs = require('fs');
class VersionPlugin {
apply(compiler) {
if (process.env.NODE_ENV !== 'production') {
return;
}
compiler.hooks.afterEmit.tap('VersionPlugin', (compilation) => {
const version = process.env.npm_package_version || 'unknown';
const buildDate = new Date().toISOString();
const content = `Version: ${version}\nBuild Date: ${buildDate}`;
fs.writeFileSync(path.join(compilation.outputOptions.path, 'version.txt'), content);
});
}
}
module.exports = {
webpack: {
configure: (config) => ({
...config,
module: {
...config.module,
rules: config.module.rules.map((rule) => {
if (rule.oneOf instanceof Array) {
// eslint-disable-next-line no-param-reassign
rule.oneOf[rule.oneOf.length - 1].exclude = [
/\.(js|mjs|jsx|cjs|ts|tsx)$/,
/\.html$/,
/\.json$/,
];
}
return rule;
}),
},
}),
alias: {
'@': path.resolve(__dirname, 'src'),
},
plugins: [new VersionPlugin()],
},
jest: {
configure: {
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
'\\.svg$': '<rootDir>/src/__mocks__/fileMock.js',
},
},
},
};