|
1 | 1 | import {
|
2 | 2 | addDependenciesToPackageJson,
|
3 | 3 | convertNxGenerator,
|
| 4 | + GeneratorCallback, |
4 | 5 | logger,
|
| 6 | + readJson, |
| 7 | + removeDependenciesFromPackageJson, |
5 | 8 | Tree,
|
6 | 9 | } from '@nrwl/devkit';
|
| 10 | +import { runTasksInSerial } from '@nrwl/workspace/src/utilities/run-tasks-in-serial'; |
7 | 11 |
|
8 |
| -const webpack5Packages = { |
9 |
| - 'copy-webpack-plugin': '^9.0.0', |
10 |
| - 'mini-css-extract-plugin': '^1.6.0', |
11 |
| - 'source-map-loader': '^2.0.1', |
| 12 | +const basePackages = { |
| 13 | + 'copy-webpack-plugin': '^9.0.1', |
| 14 | + webpack: '^5.47.0', |
| 15 | + 'webpack-merge': '^5.8.0', |
| 16 | + 'webpack-node-externals': '^3.0.0', |
| 17 | +}; |
| 18 | + |
| 19 | +const webPackages = { |
| 20 | + 'mini-css-extract-plugin': '^2.1.0', |
| 21 | + 'source-map-loader': '^3.0.0', |
12 | 22 | 'terser-webpack-plugin': '^5.1.1',
|
13 |
| - webpack: '^5.39.1', |
14 |
| - 'webpack-dev-server': '^3.11.2', |
15 |
| - 'webpack-merge': '^5.7.3', |
16 |
| - 'webpack-node-externals': '^2.5.2', |
17 |
| - 'webpack-sources': '^2.2.0', |
| 23 | + 'webpack-dev-server': '4.0.0-rc.0', |
| 24 | + 'webpack-sources': '^3.0.2', |
| 25 | + 'react-refresh': '^0.10.0', |
| 26 | + '@pmmmwh/react-refresh-webpack-plugin': '0.5.0-rc.2', |
18 | 27 | };
|
19 | 28 |
|
20 | 29 | export async function nodeMigrateToWebpack5Generator(tree: Tree, schema: {}) {
|
| 30 | + let packages = basePackages; |
| 31 | + const tasks: GeneratorCallback[] = []; |
| 32 | + |
| 33 | + const packageJson = readJson(tree, 'package.json'); |
| 34 | + const deps = [ |
| 35 | + ...Object.keys(packageJson.dependencies), // just in case someone installed it here |
| 36 | + ...Object.keys(packageJson.devDependencies), |
| 37 | + ]; |
| 38 | + |
| 39 | + if (deps.includes('@nrwl/web')) { |
| 40 | + packages = { |
| 41 | + ...packages, |
| 42 | + ...webPackages, |
| 43 | + }; |
| 44 | + } |
| 45 | + |
21 | 46 | logger.info(`NX Adding webpack 5 to workspace.`);
|
22 |
| - return addDependenciesToPackageJson(tree, {}, webpack5Packages); |
| 47 | + |
| 48 | + // Removing the packages ensures that the versions will be updated when adding them after |
| 49 | + tasks.push( |
| 50 | + removeDependenciesFromPackageJson(tree, [], Object.keys(packages)) |
| 51 | + ); |
| 52 | + |
| 53 | + tasks.push(addDependenciesToPackageJson(tree, {}, packages)); |
| 54 | + |
| 55 | + return runTasksInSerial(...tasks); |
23 | 56 | }
|
24 | 57 |
|
25 | 58 | export default nodeMigrateToWebpack5Generator;
|
|
0 commit comments