Skip to content

Latest commit

 

History

History
272 lines (225 loc) · 6.52 KB

NX.md

File metadata and controls

272 lines (225 loc) · 6.52 KB

Nx

Based on "Installation" at https://nx.dev/getting-started/installation

Install Nx (required for Nx Monorepos and Nx Cloud) globally as follows:

$ npm add --global nx@latest

To use nx directly, you can now just use:

$ nx --version

To update nx, run:

$ cd hatch-project/src/hatch_project
$ npx nx migrate latest # if nx has not yet been installed
$ nx migrate latest     # if nx has already been installed

Based on the provided repository structure and documentation, I'll help you run the Hatch project. The project appears to be set up as a React monorepo using Nx. Here are the steps to run it:

  1. First, make sure you're in the root directory of the repository:
cd /path/to/your/repository
  1. Install the dependencies:
npm ci  # This installs dependencies exactly as specified in package-lock.json
  1. Install the Nx CLI globally (if not already installed):
npm install -g @nrwl/cli

Make sure you have a tsconfig.base.json file in your hatch-project/src/hatch_project directory. If not, create one:

{
  "compileOnSave": false,
  "compilerOptions": {
    "rootDir": ".",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "importHelpers": true,
    "target": "es2015",
    "module": "esnext",
    "lib": ["es2020", "dom"],
    "skipLibCheck": true,
    "skipDefaultLibCheck": true,
    "baseUrl": ".",
    "paths": {}
  },
  "exclude": ["node_modules", "tmp"]
}

Make sure you have a tsconfig.app.json file in your hatch-project/src/hatch_project directory. If not, create one:

{
  "extends": "./tsconfig.base.json",
  "compilerOptions": {
    "outDir": "../../dist/out-tsc",
    "types": ["node"],
    "module": "esnext",
    "target": "es2015",
    "lib": ["es2020", "dom"],
    "sourceMap": true,
    "declaration": false
  },
  "exclude": ["**/*.spec.ts", "**/*.test.ts"],
  "include": ["**/*.ts"]
}

Make sure you have a project.json file in your hatch-project/src/hatch_project directory. If not, create one:

{
  "name": "hatch_project",
  "$schema": "../../../node_modules/nx/schemas/project-schema.json",
  "sourceRoot": "hatch-project/src/hatch_project/src",
  "projectType": "application",
  "targets": {
    "build": {
      "executor": "@nx/webpack:webpack",
      "outputs": ["{options.outputPath}"],
      "defaultConfiguration": "production",
      "options": {
        "outputPath": "dist/hatch_project",
        "compiler": "babel",
        "main": "hatch-project/src/hatch_project/src/main.ts",
        "tsConfig": "hatch-project/src/hatch_project/tsconfig.app.json",
        "webpackConfig": "hatch-project/src/hatch_project/webpack.config.js",
        "assets": [
          {
            "glob": "**/*",
            "input": "hatch-project/src/hatch_project/src/assets",
            "output": "assets"
          }
        ],
        "index": "hatch-project/src/hatch_project/src/index.html"
      },
      "configurations": {
        "production": {
          "optimization": true,
          "outputHashing": "all",
          "sourceMap": false,
          "extractCss": true,
          "namedChunks": false,
          "extractLicenses": true,
          "vendorChunk": false,
          "budgets": [
            {
              "type": "initial",
              "maximumWarning": "2mb",
              "maximumError": "5mb"
            }
          ]
        },
        "development": {
          "optimization": false,
          "sourceMap": true,
          "extractCss": false
        }
      }
    },
    "serve": {
      "executor": "@nx/webpack:dev-server",
      "options": {
        "buildTarget": "hatch_project:build",
        "hmr": true,
        "port": 4200
      },
      "configurations": {
        "production": {
          "buildTarget": "hatch_project:build:production"
        },
        "development": {
          "buildTarget": "hatch_project:build:development"
        }
      },
      "defaultConfiguration": "development"
    }
  }
}

Create a basic webpack.config.js file in your project:

const { composePlugins, withNx } = require('@nx/webpack');

// Nx plugins for webpack.
module.exports = composePlugins(withNx(), (config) => {
  // Update the webpack config as needed here.
  // e.g. `config.plugins.push(new MyPlugin())`
  return config;
});

You can use the Nx generate command to create a new app in the hatch-project/src/hatch_project/apps directory. Here's how:

$ cd /hatch-project/src/hatch_project
$npx nx g @nx/react:app my-app --directory=apps/my-app

Or if you want to create it from the root directory:

$ npx nx g @nx/react:app my-app --directory=hatch-project/src/hatch_project/apps/my-app

This will:

  • Create a new React application with all necessary files
  • Set up the proper directory structure
  • Configure webpack, TypeScript, and other dependencies
  • Create default components and configuration files

After creation, you can run it with:

$ npx nx serve my-app
  1. To serve the application in development mode:
npx nx serve hatch_project

This will:

  • Start a development server
  • Usually be available at http://localhost:4200
  • Auto-reload when you make changes

If that doesn't work, we might need to check if Nx recognizes the project:

npx nx show project hatch_project
  1. Alternatively, if you want to build the application:
npx nx build hatch_project

For production build:

npx nx build hatch_project --configuration=production

To run tests:

npx nx test hatch_project

If you want to run multiple tasks in parallel (e.g., build all projects):

npx nx run-many -t build --all

To generate code:

npx nx g @nrwl/react:component my-component

Common issues and solutions:

If you get path-related errors, make sure your nx.json is properly configured with the correct paths for your nested structure:

{
  "projects": {
    "hatch_project": {
      "root": "hatch-project/src/hatch_project",
      "sourceRoot": "hatch-project/src/hatch_project/src",
      "projectType": "application"
    }
  }
}

If you encounter issues with the Nx CLI, ensure it's properly installed:

npm install -g @nrwl/cli

  1. If you get Nx Cloud connection issues, you may need to reconnect:
nx generate @nx/workspace:disconnect-cloud
nx connect-to-nx-cloud
  1. If you need to clean the cache:
npm cache clean --force

Remember that all Nx commands should be run from the root of the repository where the nx.json file is located.