forked from mozilla/fxa
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.rescriptsrc.js
57 lines (49 loc) · 1.54 KB
/
.rescriptsrc.js
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
53
54
55
56
57
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
const path = require('path');
const fs = require('fs');
const { default: WebpackWatchPlugin } = require('webpack-watch-files-plugin');
const MergeIntoSingleFilePlugin = require('webpack-merge-and-include-globally');
const { permitAdditionalJSImports } = require('fxa-react/configs/rescripts');
const watchFtlPlugin = new WebpackWatchPlugin({
files: ['src/**/*.ftl'],
});
const mergeFtlPlugin = new MergeIntoSingleFilePlugin({
files: {
'../public/locales/en-US/settings.ftl': ['.license.header', 'src/**/*.ftl'],
},
});
module.exports = [
{
devServer: (config) => {
const oldWriteToDisk = config.writeToDisk
? config.writeToDisk
: () => false;
const newConfig = {
...config,
writeToDisk: (path) =>
/public\/locales\/\S+.ftl/.test(path) || oldWriteToDisk(path),
};
return newConfig;
},
webpack: (config) => {
let newConfig = { ...config };
if (!newConfig.output.path) {
newConfig = {
...newConfig,
output: {
...newConfig.output,
path: path.resolve(fs.realpathSync(__dirname), 'build'),
},
};
}
newConfig = {
...newConfig,
plugins: [...newConfig.plugins, watchFtlPlugin, mergeFtlPlugin],
};
return newConfig;
},
},
permitAdditionalJSImports,
];