npm package: @srikrushna/spfx-tasks
Description: One shared place for node tasks used by our SPFx solutions.
Latest version: 0.5.11
Deprecated: This package is no longer maintained or has been removed.

# SPFx tasks
One shared place for node tasks used by our SPFx solutions.

## createEnviromentFile.js
Creates a `.env` file in the current folder (`process.cwd()`). This is ran as a part of the `pre-watch.js` task.

## createServeConfig.js
Creates a `config/serve.json` file from the template `config/serve.sample.json` for the current folder.

## post-watch.js
Runs `modifyConfig.js`.

## pre-watch.js
Runs `createEnviromentFile.js`. Also generates a `config/.generated-solution-config.json` if the channel environment variable `SERVE_CHANNEL` is set and not **main**.
Also runs `./modifyConfig.js` to modifiy the included bundles.

## modifyConfig.js
Updates `config/config.json` for the solution based on the environment variable `SERVE_BUNDLE_REGEX`.

## generateComponentOverview.js

This script generates an overview of components by loading configuration files and writing the result to an output file.

### Dependencies

- `path`: Provides utilities for working with file and directory paths.
- `glob`: Matches file paths using patterns.
- `fs`: Provides file system-related functionality.
- `util`: Custom utility functions for logging and file operations.
- `colors`: Provides color formatting for console output.

### Constants

- `ROOT_PATH`: The root directory of the project.
- `CONFIG_FILES_PATTERN`: Pattern to match configuration files.
- `OUTPUT_FILE`: Path to the output file where the overview will be written.

## Functions

#### `loadJsonFile(file)`

- Description: Loads and parses a JSON file.
- Parameters:
  - `file`: Path to the JSON file.
- Returns: Parsed JSON object or `null` on failure.

#### `loadManifestFile(configFile, bundle)`

- Description: Loads the manifest file for a given configuration file and bundle.
- Parameters:
  - `configFile`: Path to the configuration file.
  - `bundle`: Bundle object containing information about the components.
- Returns: Manifest object containing component details or `null` on failure.

#### `loadConfigFile(configFile)`

- Description: Loads the configuration file and returns the application name and an array of manifests.
- Parameters:
  - `configFile`: Path to the configuration file.
- Returns: An array containing the application name and an array of manifest objects.

#### `generateComponentOverview()`

- Description: Generates an overview of components by loading configuration files and writing the result to an output file.
- Process:
  1. Glob matches configuration files.
  2. Loads configuration files and extracts component manifests.
  3. Writes the overview to the output file.

## generateComponentsClass.js

This script generates C# classes based on JSON data. It is designed to work with a specific JSON file structure containing information about SPFx components.

### Dependencies

- `path`: Provides utilities for working with file and directory paths.
- `glob`: Matches file paths using patterns.
- `fs`: Provides file system-related functionality.
- `util`: Custom utility functions for logging and file operations.
- `lodash`: Provides utility functions for working with arrays, objects, and other data types.
- `package.json`: Contains metadata about the project.

### Constants

- `ROOT_PATH`: The root directory of the project.
- `INPUT_JSON_FILE`: Path to the input JSON file containing component data.
- `NAMESPACE`: Namespace for the generated C# classes.
- `DIRNAME`: Path to the directory where the generated C# files will be saved.
- `FILE_NAME`: Name of the generated C# file.
- `MAIN_CLASS_NAME`: Name of the main static class containing all components.
- `COMPONENT_CLASS_NAME`: Name of the C# class representing SPFx components.

### Functions

#### `generateClasses(jsonFile)`

- Description: Generates C# classes for a JSON file.
- Parameters:
  - `jsonFile`: Path to the JSON file containing component data.

#### `generateComponentClass(component, classType = 'public readonly')`

- Description: Generates a C# class for a component.
- Parameters:
  - `component`: Component object containing information about the component.
  - `classType`: Type of the class to generate (default is 'public readonly').

#### `generateAppClassName(app)`

- Description: Generates the class name for the given SPFx app.
- Parameters:
  - `app`: Name of the SPFx app.
- Returns: The generated class name.

#### `generateAppClass(app, components, classType = 'public class', classMemberType = 'public static readonly')`

- Description: Generates a C# class for the SPFx app with the provided app name and components.
- Parameters:
  - `app`: Name of the SPFx app.
  - `components`: Array of component objects belonging to the app.
  - `classType`: Type of the class to generate (default is 'public class').
  - `classMemberType`: Type of the class members to generate (default is 'public static readonly').

#### `generateCSharpCode(jsonContent)`

- Description: Generates C# code based on the provided JSON content.
- Parameters:
  - `jsonContent`: JSON content used to generate the C# code.
- Returns: Generated C# code as a string.