Skip to main content

Create Workspace

This package offers the opportunity to effortlessly establish a fresh workspace, harnessing the potent presets of GenesisX in combination with selectable plugins for the accelerated inception of your upcoming application or project. The package caters to both NX and Turbo workspaces.

Usage

pre-requisites

Make sure you are on correct version of Nodejs 18.x and Nx Version 16.6

// Node
node --version

// NX
nx --version

Interactive Mode

  npx @genesisx/create-workspace@latest

Use the last stable version published.

  1. Run the above command where you want your workspace generated.
  2. Select the desired monorepo solution you want to use.
  3. Provide a name for your new workspace.
    • If NX, select the NX based GenesisX application generators to be installed along with the workspace initialization.
    • If Turbo, select the package manager to be used for the workspace initialization.

Non-interactive Mode

npx @genesisx/create-workspace@<version> --nx <workspace-name>

Use the last stable version published.

Directory Structure

The following directory structure is created by this setup:


my-nx-workspace
├── apps/
├── libs/
├── tools/
├── .gitignore
├── .prettierrc
├── nx.json
├── package.json
├── README.md
├── tsconfig.base.json
└── workspace.json

NX

The NX folder structure is well-suited for most of our NX based packages that rely on shared libraries and features used across multiple applications.

To generate files and apply the "App" preset, the GenesisX CLI uses the create-nx-workspace command. One of the benefits of using create-workspace is that you can select which GenesisX plugins to install automatically. Additionally, it builds the project using the latest supported version of NX that has been tested with GenesisX plugins.

Turbo

If you are opting for the Turbo based workspace, you will not have the option to select the GenesisX plugins which are currently NX based. We are working on making the existing plugins NX agnostic and thus will be available for Turbo based workspaces as well in the near future.

Meanwhile, you can start using GenesisX React-Archetype which is a framework agnostic package and can be used with the popular monorepo solutions.

Generators & Plugins

Nx provides a large number of generators and executors that can be used by installing plugins. There are a huge number of community maintained plugins which can be found in the NX Plugin Registry and officially supported plugins for all major frameworks.

GenesisX Plugins

The goal of the GenesisX project is to accelerate development and increase quality by providing templates that encapsulate best practices through generators that can be used to fulfill your project requirements.

GenesisX plugins are installed into the node_modules directory and can be run from the command line or from the NX console in Visual Studio Code. You can also "eject" a plugin which will convert it into a workspace generator which you can customize as required.

GenesisX plugins generally works fine with all the versions of Nx that do not contain a breaking change. The zero-day setup time can be reduced drastically by making use of GenesisX.

More details & Troubleshooting

Visit the troubleshooting guide for common issues or refer to the readme.md file located within the package folder <workspace-folder>/node_modules/@genesisx/create-workspace/README.md

Contributors Guidelines

Running build and lints

To build the CLI, run this command in the terminal:

nx run create-workspace:build

To execute lint checks run:

nx run create-workspace:lint

To execute unit test cases run:

nx run create-workspace:test