@spryker/oryx-for-zed 2.12.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ### 3.0.0
4
+ Released on 11.05.2023
5
+
6
+ - Introduced `postcss` dependency.
7
+ - Updated dependencies:
8
+ - `node`: `16.0.0` => `18.0.0`
9
+ - `npm`: `8.0.0` => `9.0.0`
10
+ - `autoprefixer`: `9.8.8` => `10.4.14`
11
+ - `postcss-loader`: `2.1.6` => `7.3.0`
12
+ - `webpack`: `5.74.0` => `5.81.0`
13
+
14
+
15
+ ### 2.13.0
16
+ Released on 04.04.2023
17
+
18
+ - Removed `core-js`, `es6-promise`, `optimize-css-assets-webpack-plugin` dependencies.
19
+ - Removed deprecated `@spryker/oryx` dependency and moved it's functionality into the package.
20
+ - Introduced `dayjs`, `css-minimizer-webpack-plugin`, `fast-glob` dependencies.
21
+ - Updated dependencies.
22
+
23
+
3
24
  ### 2.12.0
4
25
  Released on 31.05.2022
5
26
 
package/README.md CHANGED
@@ -1,7 +1,12 @@
1
1
  # Oryx for Zed
2
2
 
3
- Spryker ZED frontend automation tool (Oryx based)
3
+ Spryker ZED frontend automation tool
4
4
 
5
- > Our documentation has moved. Please go to [our official Spryker documentation](https://documentation.spryker.com/front-end_developer_guide/zed/oryx/oryx-for-zed.htm).
5
+ #### Requirements
6
6
 
7
- > If you're looking for **Oryx**, [click here](https://github.com/spryker/oryx).
7
+ - Node.js version >= 18.0.0
8
+ - Npm version >= 9.0.0
9
+ - Webpack version >= 5.0.0 (starting from 2.13.0 version)
10
+
11
+
12
+ The tool [documentation](https://docs.spryker.com/docs/scos/dev/front-end-development/202304.0/zed/oryx-for-zed.html).
package/build.js CHANGED
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- const oryx = require('@spryker/oryx');
3
+ const build = require('./lib/build');
4
4
  const api = require('./lib');
5
5
 
6
6
  // deprecated copyAssetsCallback for backward compatibility only
7
7
  const copyAssetsCallback = require('./lib/copy');
8
8
 
9
9
  api.getConfiguration(api.settings)
10
- .then(configuration => oryx.build(configuration, copyAssetsCallback))
10
+ .then(configuration => build(configuration, copyAssetsCallback))
11
11
  .catch(error => console.error('An error occurred while creating configuration', error));
package/lib/build.js ADDED
@@ -0,0 +1,68 @@
1
+ const colors = require('colors/safe');
2
+ const dayjs = require('dayjs');
3
+ const log = require('./log');
4
+
5
+ function build(configuration, callback) {
6
+ log.task('build');
7
+
8
+ if (!build.webpack) {
9
+ build.loadCompiler();
10
+ }
11
+
12
+ log.step('using webpack', build.webpackVersion);
13
+
14
+ if (configuration.watch) {
15
+ log.step('watchers enabled', colors.dim('(press [ctrl+c] to exit)'));
16
+ }
17
+
18
+ log.step('building assets...');
19
+
20
+ try {
21
+ build.webpack(configuration, (error, stats) => {
22
+ const output = !!stats && stats.toString(configuration.stats);
23
+ const duration = dayjs(stats.endTime - stats.startTime).format('s.SSS');
24
+ let message = `built in ${duration}s`;
25
+ let logFn = 'done';
26
+
27
+ if (error || stats.hasErrors()) {
28
+ message = 'build failed';
29
+ logFn = 'error';
30
+ }
31
+
32
+ if (error) {
33
+ log.error(colors.red('webpack configuration:'), error.toString());
34
+ log.error(colors.red('details:'), error.details);
35
+ }
36
+
37
+ if (output) {
38
+ log.step(`webpack output:\n ${output}`);
39
+ }
40
+
41
+ if (configuration.watch) {
42
+ const endTime = dayjs(stats.endTime).format('HH:mm:ss');
43
+
44
+ message = `${colors.dim(`[${endTime}]`)} ${message}...`;
45
+ }
46
+
47
+ log[logFn].apply(log, [message]);
48
+
49
+ if (callback) {
50
+ callback(error, stats);
51
+ }
52
+ });
53
+ } catch (error) {
54
+ log.error(colors.red('webpack configuration:'), error.toString());
55
+ log.error('build aborted');
56
+
57
+ if (callback) {
58
+ callback(error);
59
+ }
60
+ }
61
+ }
62
+
63
+ build.loadCompiler = function(webpack, webpackVersion) {
64
+ this.webpack = webpack || require('webpack');
65
+ this.webpackVersion = webpackVersion || require('webpack/package').version;
66
+ }
67
+
68
+ module.exports = build;
@@ -0,0 +1,31 @@
1
+ function configurePaths(entryPaths, runtimeEntryName) {
2
+ if (!runtimeEntryName) {
3
+ return entryPaths;
4
+ }
5
+
6
+ const runtimeEntryPaths = {};
7
+ const dependedEntryPaths = {};
8
+
9
+ Object.entries(entryPaths).forEach(([key, value]) => {
10
+ if (key === runtimeEntryName) {
11
+ runtimeEntryPaths[key] = {
12
+ runtime: false,
13
+ import: value,
14
+ };
15
+
16
+ return;
17
+ }
18
+
19
+ dependedEntryPaths[key] = {
20
+ dependOn: runtimeEntryName,
21
+ import: value,
22
+ };
23
+ });
24
+
25
+ return {
26
+ ...runtimeEntryPaths,
27
+ ...dependedEntryPaths,
28
+ }
29
+ }
30
+
31
+ module.exports = configurePaths;
package/lib/copy.js CHANGED
@@ -1,16 +1,18 @@
1
1
  const fs = require('fs-extra');
2
2
  const path = require('path');
3
- const oryx = require('@spryker/oryx');
3
+ const log = require('./log');
4
4
  const settings = require('./settings');
5
5
 
6
6
  const copyAssets = async () => {
7
7
  const backCompatibilityPublicDir = path.resolve(path.join('public/Zed', settings.paths.publicPath));
8
8
 
9
9
  try {
10
- oryx.log.task('Copy assets for backward compatibility after renaming assets folder');
11
- oryx.log.step('copying assets...');
10
+ log.task('Copy assets for backward compatibility after renaming assets folder');
11
+ log.step('copying assets...');
12
+
12
13
  await fs.copy(settings.paths.publicDir, backCompatibilityPublicDir);
13
- oryx.log.done('assets copied to: ', backCompatibilityPublicDir);
14
+
15
+ log.done('assets copied to: ', backCompatibilityPublicDir);
14
16
  } catch (err) {
15
17
  console.error(err)
16
18
  }
package/lib/find.js ADDED
@@ -0,0 +1,75 @@
1
+ const path = require('path');
2
+ const fastGlob = require('fast-glob');
3
+ const log = require('./log');
4
+
5
+ const cwd = process.cwd();
6
+
7
+ function parseSettings(settings) {
8
+ return Object.assign({}, {
9
+ glob: { onlyFiles: false },
10
+ }, settings);
11
+ }
12
+
13
+ async function fastGlobAsync(patterns, rootConfiguration) {
14
+ try {
15
+ return await fastGlob(patterns, rootConfiguration);
16
+ } catch(error) {
17
+ log.error('An error occurred while globbing the system for entry points.', error);
18
+ }
19
+ }
20
+
21
+ async function glob(configuration, dirs, patterns) {
22
+ return await dirs.reduce(async (resultsPromise, dir) => {
23
+ const relativeRoot = dir.replace(cwd, '.');
24
+
25
+ log.debug('searching in', `${relativeRoot}...`);
26
+
27
+ const rootConfiguration = { ...configuration, cwd: dir };
28
+ const results = await resultsPromise;
29
+ const fastGlobPath = await fastGlobAsync(patterns, rootConfiguration);
30
+ const fastGlobFullPath = fastGlobPath.map(result => path.join(dir, result));
31
+
32
+ return results.concat(fastGlobFullPath);
33
+ }, Promise.resolve([]));
34
+ }
35
+
36
+ function toObject(paths, defineName) {
37
+ return paths.reduce((object, currentPath) => {
38
+ const name = defineName ? defineName(currentPath) : path.basename(currentPath);
39
+
40
+ object[name] = currentPath;
41
+
42
+ return object;
43
+ }, {});
44
+ }
45
+
46
+ async function find(settings, initial = {}) {
47
+ const parsedSettings = parseSettings(settings);
48
+
49
+ log.debug('settings:', parsedSettings);
50
+
51
+ let results = await glob(parsedSettings.glob, parsedSettings.dirs, parsedSettings.patterns);
52
+ let count = 0;
53
+
54
+ log.task('find');
55
+ log.debug('initial:', initial);
56
+
57
+ if (parsedSettings.description) {
58
+ log.step(parsedSettings.description);
59
+ }
60
+
61
+ if (Array.isArray(initial)) {
62
+ results = initial.concat(results);
63
+ count = results.length;
64
+ } else {
65
+ results = Object.assign({}, initial, toObject(results, parsedSettings.defineName));
66
+ count = Object.keys(results).length;
67
+ }
68
+
69
+ log.debug('results:', results);
70
+ log.done(count, 'found');
71
+
72
+ return results;
73
+ }
74
+
75
+ module.exports = find;
package/lib/index.js CHANGED
@@ -1,15 +1,19 @@
1
- const oryx = require('@spryker/oryx');
2
1
  const webpack = require('webpack');
3
2
  const webpackVersion = require('webpack/package').version;
3
+ const log = require('./log');
4
+ const build = require('./build');
5
+ const copyAssets = require('./copy');
4
6
  const pkg = require('../package');
5
7
 
6
- oryx.log.info(pkg.name, pkg.version);
7
- oryx.build.loadCompiler(webpack, webpackVersion);
8
+ log.info(pkg.name, pkg.version);
9
+ build.loadCompiler(webpack, webpackVersion);
8
10
 
9
11
  const settings = require('./settings');
10
12
  const getConfiguration = require('./webpack.config');
11
13
 
12
14
  module.exports = {
13
15
  settings,
14
- getConfiguration
16
+ getConfiguration,
17
+ build,
18
+ copyAssets,
15
19
  };
package/lib/log.js ADDED
@@ -0,0 +1,66 @@
1
+ const colors = require('colors/safe');
2
+
3
+ const prefix = {
4
+ info: '\u2648 ',
5
+ task: null,
6
+ step: colors.blue('\u25cf'),
7
+ done: colors.green('\u2714'),
8
+ error: colors.red('\u2718'),
9
+ debug: colors.dim('\u25cf [DEBUG]'),
10
+ };
11
+
12
+ function getArgs(color, prefixArg, ...args) {
13
+ args = args.map(arg => {
14
+ let output = arg;
15
+
16
+ if (typeof(arg) === 'object') {
17
+ output = `\n ${JSON.stringify(arg, ' ', 2)}`;
18
+ }
19
+
20
+ if (color) {
21
+ return colors[color].apply(null, [output]);
22
+ }
23
+
24
+ return output;
25
+ });
26
+
27
+ if (prefixArg) {
28
+ return [prefixArg].concat(args);
29
+ }
30
+
31
+ return args;
32
+ }
33
+
34
+ function info() {
35
+ console.info.apply(console, getArgs('magenta', prefix.info, ...arguments));
36
+ }
37
+
38
+ function task() {
39
+ console.log();
40
+ console.log.apply(console, getArgs('blue', prefix.task, ...arguments));
41
+ }
42
+
43
+ function step() {
44
+ console.log.apply(console, getArgs(null, prefix.step, ...arguments));
45
+ }
46
+
47
+ function debug() {
48
+ console.log.apply(console, getArgs('dim', prefix.debug, ...arguments));
49
+ }
50
+
51
+ function done() {
52
+ console.log.apply(console, getArgs(null, prefix.done, ...arguments));
53
+ }
54
+
55
+ function error() {
56
+ console.error.apply(console, getArgs(null, prefix.error, ...arguments));
57
+ }
58
+
59
+ module.exports = {
60
+ info,
61
+ task,
62
+ step,
63
+ done,
64
+ error,
65
+ debug: !!process.env.DEBUG ? debug : function() {},
66
+ }
package/lib/settings.js CHANGED
@@ -1,10 +1,9 @@
1
1
  const fs = require('fs');
2
2
  const path = require('path');
3
- const oryx = require('@spryker/oryx');
4
3
  const argv = require('yargs').argv;
4
+ const log = require('./log');
5
5
 
6
6
  const isVerbose = !!argv.verbose;
7
-
8
7
  const rootDir = process.cwd();
9
8
  const sourcePath = './assets/Zed/';
10
9
  const publicPath = '/assets/';
@@ -17,7 +16,7 @@ let bundlesPath = './vendor/spryker/';
17
16
  let guiFolder = 'gui';
18
17
 
19
18
  if (!fs.existsSync(path.resolve(bundlesPath, guiFolder))) {
20
- oryx.log.step('spryker core: no-bundle-split layout detected');
19
+ log.step('spryker core: no-bundle-split layout detected');
21
20
 
22
21
  bundlesPath = './vendor/spryker/spryker/Bundles/';
23
22
  guiFolder = 'Gui';
@@ -30,7 +29,7 @@ const settings = {
30
29
  options: {
31
30
  isProduction: !!argv.prod,
32
31
  isWatching: !!argv.dev,
33
- isVerbose
32
+ isVerbose,
34
33
  },
35
34
 
36
35
  paths: {
@@ -47,18 +46,20 @@ const settings = {
47
46
  sdkDir,
48
47
  },
49
48
 
49
+ runtimeEntryName: 'spryker-zed-gui-commons',
50
+
50
51
  entry: {
51
52
  dirs: [bundlesDir, ecoDir, sdkDir],
52
53
  patterns: ['**/Zed/**/*.entry.js'],
53
54
  description: 'looking for entry points...',
54
- defineName: p => path.basename(p, '.entry.js')
55
+ defineName: p => path.basename(p, '.entry.js'),
55
56
  },
56
57
 
57
58
  resolveModules: {
58
59
  dirs: [bundlesDir],
59
60
  patterns: ['**/Zed/node_modules'],
60
- description: 'resolving core modules deps...'
61
- }
61
+ description: 'resolving core modules deps...',
62
+ },
62
63
  }
63
64
 
64
65
  module.exports = settings;
@@ -1,29 +1,21 @@
1
- const path = require('path');
2
- const oryx = require('@spryker/oryx');
3
1
  const webpack = require('webpack');
4
- const autoprefixer = require('autoprefixer');
5
2
  const MiniCssExtractPlugin = require('mini-css-extract-plugin');
6
3
  const TerserPlugin = require('terser-webpack-plugin');
7
- const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
4
+ const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
5
+ const find = require('./find');
6
+ const configurePaths = require('./configure-paths');
8
7
 
9
8
  async function getConfiguration(settings) {
10
9
  let mode = 'development';
11
10
  let devtool = 'inline-source-map';
12
- let postCssPlugins = [];
13
11
 
14
12
  if (settings.options.isProduction) {
15
13
  mode = 'production';
16
14
  devtool = false;
17
-
18
- postCssPlugins = [
19
- autoprefixer({
20
- browsers: ['last 4 versions']
21
- })
22
- ];
23
15
  }
24
16
 
25
- const entryPromise = oryx.find(settings.entry);
26
- const modulesPromise = oryx.find(settings.resolveModules, []);
17
+ const entryPromise = find(settings.entry);
18
+ const modulesPromise = find(settings.resolveModules, []);
27
19
  const [entryPaths, modulesPaths] = await Promise.all([entryPromise, modulesPromise]);
28
20
 
29
21
  let config = {
@@ -35,14 +27,14 @@ async function getConfiguration(settings) {
35
27
  watchOptions: {
36
28
  aggregateTimeout: 300,
37
29
  poll: 500,
38
- ignored: /(node_modules)/
30
+ ignored: /(node_modules)/,
39
31
  },
40
32
 
41
- entry: entryPaths,
33
+ entry: configurePaths(entryPaths, settings.runtimeEntryName),
42
34
 
43
35
  output: {
44
36
  path: settings.paths.publicDir,
45
- filename: './js/[name].js'
37
+ filename: './js/[name].js',
46
38
  },
47
39
 
48
40
  resolve: {
@@ -51,7 +43,7 @@ async function getConfiguration(settings) {
51
43
  'node_modules/@spryker/oryx-for-zed/node_modules',
52
44
  'node_modules',
53
45
  settings.paths.sourcePath,
54
- settings.paths.bundlesPath
46
+ settings.paths.bundlesPath,
55
47
  ],
56
48
  extensions: ['.js', '.css', '.scss'],
57
49
  alias: {
@@ -59,25 +51,25 @@ async function getConfiguration(settings) {
59
51
  ZedGuiEditorConfiguration: `${settings.paths.guiFolder}/assets/Zed/js/modules/editor`,
60
52
  ZedGuiModules: `${settings.paths.guiFolder}/assets/Zed/js/modules`,
61
53
  jQuery: 'jquery',
62
- }
54
+ },
63
55
  },
64
56
 
65
57
  resolveLoader: {
66
58
  modules: [
67
59
  'node_modules/@spryker/oryx-for-zed/node_modules',
68
- 'node_modules'
69
- ]
60
+ 'node_modules',
61
+ ],
70
62
  },
71
63
 
72
64
  module: {
73
65
  rules: [
74
66
  {
75
67
  test: /datatables\.net.*/,
76
- use: 'imports-loader?define=>false'
68
+ use: 'imports-loader?define=>false',
77
69
  },
78
70
  {
79
71
  test: /(jquery-migrate)/,
80
- use: 'imports-loader?define=>false'
72
+ use: 'imports-loader?define=>false',
81
73
  },
82
74
  {
83
75
  test: /\.m?js$/,
@@ -86,9 +78,9 @@ async function getConfiguration(settings) {
86
78
  loader: 'babel-loader',
87
79
  options: {
88
80
  cacheDirectory: true,
89
- presets: ['@babel/env']
90
- }
91
- }
81
+ presets: ['@babel/env'],
82
+ },
83
+ },
92
84
  },
93
85
  {
94
86
  test: /\.s?css/i,
@@ -97,27 +89,28 @@ async function getConfiguration(settings) {
97
89
  {
98
90
  loader: 'css-loader',
99
91
  options: {
100
- importLoaders: 1
101
- }
92
+ importLoaders: 1,
93
+ },
102
94
  },
103
95
  {
104
96
  loader: 'postcss-loader',
105
97
  options: {
106
- ident: 'postcss',
107
- plugins: postCssPlugins
108
- }
98
+ postcssOptions: {
99
+ plugins: [require('autoprefixer')],
100
+ },
101
+ },
109
102
  },
110
103
  {
111
- loader: 'resolve-url-loader'
104
+ loader: 'resolve-url-loader',
112
105
  },
113
106
  {
114
107
  loader: 'sass-loader',
115
108
  options: {
116
109
  implementation: require('sass'),
117
- sourceMap: true
118
- }
119
- }
120
- ]
110
+ sourceMap: true,
111
+ },
112
+ },
113
+ ],
121
114
  },
122
115
  {
123
116
  test: /\.(ttf|woff2?|eot|svg|otf)\??(\d*\w*=?\.?)+$/i,
@@ -125,9 +118,9 @@ async function getConfiguration(settings) {
125
118
  loader: 'file-loader',
126
119
  options: {
127
120
  name: 'fonts/[name].[ext]',
128
- publicPath: settings.paths.publicPath
129
- }
130
- }]
121
+ publicPath: settings.paths.publicPath,
122
+ },
123
+ }],
131
124
  },
132
125
  {
133
126
  test: /\.(jpe?g|png|gif|svg)\??(\d*\w*=?\.?)+$/i,
@@ -135,34 +128,34 @@ async function getConfiguration(settings) {
135
128
  loader: 'file-loader',
136
129
  options: {
137
130
  name: 'img/[name].[ext]',
138
- publicPath: settings.paths.publicPath
139
- }
140
- }]
141
- }
142
- ]
131
+ publicPath: settings.paths.publicPath,
132
+ },
133
+ }],
134
+ },
135
+ ],
143
136
  },
144
137
 
145
138
  optimization: {
146
139
  runtimeChunk: {
147
- name: 'spryker-zed-gui-commons'
140
+ name: settings.runtimeEntryName,
148
141
  },
149
142
  concatenateModules: false,
150
143
  splitChunks: {
151
144
  cacheGroups: {
152
145
  default: false,
153
- vendors: false,
146
+ defaultVendors: false,
154
147
  commons: {
155
- name: 'spryker-zed-gui-commons'
156
- }
157
- }
158
- }
148
+ name: settings.runtimeEntryName,
149
+ },
150
+ },
151
+ },
159
152
  },
160
153
 
161
154
  plugins: [
162
155
  new webpack.DefinePlugin({
163
156
  DEV: !settings.options.isProduction,
164
157
  WATCH: settings.options.isWatching,
165
- 'require.specified': 'require.resolve'
158
+ 'require.specified': 'require.resolve',
166
159
  }),
167
160
 
168
161
  new webpack.ProvidePlugin({
@@ -173,13 +166,13 @@ async function getConfiguration(settings) {
173
166
  // legacy provider
174
167
  SprykerAjax: `${settings.paths.guiFolder}/assets/Zed/js/modules/legacy/SprykerAjax`,
175
168
  SprykerAjaxCallbacks: `${settings.paths.guiFolder}/assets/Zed/js/modules/legacy/SprykerAjaxCallbacks`,
176
- SprykerAlert: `${settings.paths.guiFolder}/assets/Zed/js/modules/legacy/SprykerAlert`
169
+ SprykerAlert: `${settings.paths.guiFolder}/assets/Zed/js/modules/legacy/SprykerAlert`,
177
170
  }),
178
171
 
179
172
  new MiniCssExtractPlugin({
180
173
  filename: `./css/[name].css`,
181
- })
182
- ]
174
+ }),
175
+ ],
183
176
  };
184
177
 
185
178
  if (settings.options.isProduction) {
@@ -188,27 +181,28 @@ async function getConfiguration(settings) {
188
181
 
189
182
  minimizer: [
190
183
  new TerserPlugin({
191
- cache: true,
192
184
  parallel: true,
193
- sourceMap: false,
194
185
  extractComments: false,
195
186
  terserOptions: {
196
187
  ecma: 5,
197
188
  output: {
198
189
  comments: false,
199
- beautify: false
200
- }
201
- }
190
+ beautify: false,
191
+ },
192
+ },
202
193
  }),
203
194
 
204
- new OptimizeCSSAssetsPlugin({
205
- cssProcessorOptions: {
206
- discardComments: {
207
- removeAll: true
208
- }
209
- }
210
- })
211
- ]
195
+ new CssMinimizerPlugin({
196
+ minimizerOptions: {
197
+ preset: [
198
+ 'default',
199
+ {
200
+ discardComments: { removeAll: true },
201
+ },
202
+ ],
203
+ },
204
+ }),
205
+ ],
212
206
  };
213
207
  }
214
208
 
package/package.json CHANGED
@@ -1,43 +1,46 @@
1
1
  {
2
2
  "name": "@spryker/oryx-for-zed",
3
- "version": "2.12.0",
4
- "description": "Spryker ZED frontend automation tool (oryx based)",
3
+ "version": "3.0.0",
4
+ "description": "Spryker ZED frontend automation tool",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git@github.com:spryker/oryx-for-zed.git"
8
+ },
9
+ "license": "MIT",
5
10
  "author": {
6
11
  "name": "Spryker Sytems GmbH",
7
12
  "email": "info@spryker.com",
8
13
  "url": "http://spryker.com"
9
14
  },
10
- "repository": {
11
- "url": "git@github.com:spryker/oryx-for-zed.git",
12
- "type": "git"
13
- },
14
- "license": "MIT",
15
15
  "main": "index.js",
16
16
  "engines": {
17
- "node": ">=12.0.0",
18
- "npm": ">=6.9.0"
17
+ "node": ">=18.0.0",
18
+ "npm": ">=9.0.0"
19
19
  },
20
20
  "dependencies": {
21
- "@babel/core": "~7.17.12",
22
- "@babel/preset-env": "~7.17.12",
23
- "@spryker/oryx": "^1.4.0",
24
- "autoprefixer": "~8.3.0",
25
- "babel-loader": "~8.2.5",
26
- "core-js": "~2.5.5",
21
+ "autoprefixer": "~10.4.14",
22
+ "babel-loader": "~8.3.0",
23
+ "colors": "~1.4.0",
27
24
  "css-loader": "~2.1.1",
28
- "es6-promise": "~4.0.5",
25
+ "css-minimizer-webpack-plugin": "~4.2.2",
26
+ "dayjs": "~1.11.7",
27
+ "fast-glob": "~3.2.12",
29
28
  "file-loader": "~1.1.11",
30
- "fs-extra": "~10.0.0",
29
+ "fs-extra": "~10.1.0",
31
30
  "imports-loader": "~0.8.0",
32
- "mini-css-extract-plugin": "~0.4.0",
33
- "optimize-css-assets-webpack-plugin": "~5.0.8",
34
- "postcss-loader": "~2.1.4",
31
+ "mini-css-extract-plugin": "~2.7.2",
32
+ "postcss": "~8.4.23",
33
+ "postcss-loader": "~7.3.0",
35
34
  "resolve-url-loader": "~5.0.0",
36
- "sass": "~1.51.0",
37
- "sass-loader": "~10.2.1",
38
- "style-loader": "~0.21.0",
39
- "terser-webpack-plugin": "~4.2.2",
40
- "webpack": "~4.46.0",
41
- "yargs": "~13.3.0"
35
+ "sass": "~1.60.0",
36
+ "sass-loader": "~10.4.1",
37
+ "style-loader": "~0.23.1",
38
+ "terser-webpack-plugin": "~5.3.6",
39
+ "webpack": "~5.81.0",
40
+ "yargs": "~13.3.2"
41
+ },
42
+ "devDependencies": {
43
+ "@babel/core": "~7.21.3",
44
+ "@babel/preset-env": "~7.20.2"
42
45
  }
43
46
  }