77 lines
1.8 KiB
TypeScript
77 lines
1.8 KiB
TypeScript
import {
|
|
addDependenciesToPackageJson,
|
|
convertNxGenerator,
|
|
formatFiles,
|
|
GeneratorCallback,
|
|
Tree,
|
|
} from '@nrwl/devkit';
|
|
import { runTasksInSerial } from '@nrwl/workspace/src/utilities/run-tasks-in-serial';
|
|
import { swcCoreVersion } from '@nrwl/js/src/utils/versions';
|
|
|
|
import { Schema } from './schema';
|
|
import {
|
|
reactRefreshVersion,
|
|
reactRefreshWebpackPluginVersion,
|
|
svgrWebpackVersion,
|
|
swcHelpersVersion,
|
|
swcLoaderVersion,
|
|
tsLibVersion,
|
|
urlLoaderVersion,
|
|
} from '../../utils/versions';
|
|
import { addBabelInputs } from '@nrwl/js/src/utils/add-babel-inputs';
|
|
|
|
export async function webpackInitGenerator(tree: Tree, schema: Schema) {
|
|
const tasks: GeneratorCallback[] = [];
|
|
|
|
if (schema.compiler === 'babel') {
|
|
addBabelInputs(tree);
|
|
}
|
|
|
|
if (schema.compiler === 'swc') {
|
|
const swcInstallTask = addDependenciesToPackageJson(
|
|
tree,
|
|
{},
|
|
{
|
|
'@swc/helpers': swcHelpersVersion,
|
|
'@swc/core': swcCoreVersion,
|
|
'swc-loader': swcLoaderVersion,
|
|
}
|
|
);
|
|
tasks.push(swcInstallTask);
|
|
}
|
|
|
|
if (schema.compiler === 'tsc') {
|
|
const tscInstallTask = addDependenciesToPackageJson(
|
|
tree,
|
|
{},
|
|
{ tslib: tsLibVersion }
|
|
);
|
|
tasks.push(tscInstallTask);
|
|
}
|
|
|
|
if (schema.uiFramework === 'react') {
|
|
const reactInstallTask = addDependenciesToPackageJson(
|
|
tree,
|
|
{},
|
|
{
|
|
'@pmmmwh/react-refresh-webpack-plugin':
|
|
reactRefreshWebpackPluginVersion,
|
|
'@svgr/webpack': svgrWebpackVersion,
|
|
'react-refresh': reactRefreshVersion,
|
|
'url-loader': urlLoaderVersion,
|
|
}
|
|
);
|
|
tasks.push(reactInstallTask);
|
|
}
|
|
|
|
if (!schema.skipFormat) {
|
|
await formatFiles(tree);
|
|
}
|
|
|
|
return runTasksInSerial(...tasks);
|
|
}
|
|
|
|
export default webpackInitGenerator;
|
|
|
|
export const webpackInitSchematic = convertNxGenerator(webpackInitGenerator);
|