1 | const path = require("path");
|
2 |
|
3 | const MODULES = path.join(__dirname, "..", "node_modules");
|
4 |
|
5 | module.exports = {
|
6 | presets: [
|
7 | require.resolve("@swissquote/crafty-preset-eslint"),
|
8 | require.resolve("@swissquote/crafty-preset-terser")
|
9 | ],
|
10 | defaultConfig(config) {
|
11 | return {
|
12 | bundleTypes: { js: "js" }
|
13 | };
|
14 | },
|
15 | jest(crafty, options) {
|
16 | options.moduleDirectories.push(MODULES);
|
17 | options.transform["\\.(js|jsx)$"] = require.resolve("./jest-transformer");
|
18 | options.moduleFileExtensions.push("jsx");
|
19 |
|
20 | const babelConfigurator = require("@swissquote/babel-preset-swissquote/configurator");
|
21 | options.globals.BABEL_OPTIONS = babelConfigurator(
|
22 | crafty,
|
23 | {},
|
24 | { environment: "test" }
|
25 | );
|
26 | },
|
27 | bundleCreator(crafty) {
|
28 | const configurators = { js: {} };
|
29 |
|
30 | if (
|
31 | crafty.config.loadedPresets.some(
|
32 | preset => preset.presetName === "@swissquote/crafty-runner-gulp"
|
33 | )
|
34 | ) {
|
35 | configurators.js["gulp/babel"] = (
|
36 | _crafty,
|
37 | bundle,
|
38 | gulp,
|
39 | StreamHandler
|
40 | ) => {
|
41 | const createTask = require("./gulp");
|
42 | gulp.task(bundle.taskName, createTask(_crafty, bundle, StreamHandler));
|
43 | _crafty.watcher.add(bundle.watch || bundle.source, bundle.taskName);
|
44 | };
|
45 | }
|
46 |
|
47 | return configurators;
|
48 | },
|
49 | rollup(crafty, bundle, rollupConfig) {
|
50 | const babelConfigurator = require("@swissquote/babel-preset-swissquote/configurator-rollup");
|
51 | const { hasRuntime, options } = babelConfigurator(crafty, bundle);
|
52 |
|
53 | if (hasRuntime) {
|
54 | rollupConfig.input.external.push(/@babel\/runtime/);
|
55 | }
|
56 |
|
57 | rollupConfig.input.plugins.babel = {
|
58 | plugin: require("@rollup/plugin-babel"),
|
59 | weight: 20,
|
60 | options
|
61 | };
|
62 | },
|
63 | webpack(crafty, bundle, chain) {
|
64 | chain.resolve.extensions.add(".jsx");
|
65 | chain.resolve.modules.add(MODULES);
|
66 | chain.resolveLoader.modules.add(MODULES);
|
67 |
|
68 | const babelConfigurator = require("@swissquote/babel-preset-swissquote/configurator");
|
69 | const options = babelConfigurator(crafty, bundle, {
|
70 | deduplicateHelpers: true,
|
71 | useESModules: true
|
72 | });
|
73 |
|
74 |
|
75 | if (
|
76 | crafty.getEnvironment() === "production" &&
|
77 | !process.argv.some(arg => arg === "--no-cache") &&
|
78 | !process.env.TESTING_CRAFTY
|
79 | ) {
|
80 | options.cacheDirectory = true;
|
81 | }
|
82 |
|
83 |
|
84 | chain.module
|
85 | .rule("babel")
|
86 | .test(/\.jsx?$/)
|
87 | .exclude.add(/(node_modules|bower_components)/)
|
88 | .end()
|
89 | .use("babel")
|
90 | .loader(require.resolve("babel-loader"))
|
91 | .options(options);
|
92 | }
|
93 | };
|