UNPKG

2.65 kBJavaScriptView Raw
1const path = require("path");
2
3const MODULES = path.join(__dirname, "..", "node_modules");
4
5module.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 // Cache can be disabled for experimentation and when running Crafty's tests
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 // EcmaScript 2015+
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};