nx vs vue-cli vs create-react-app
Frontend Project Scaffolding and Build Tooling
nxvue-clicreate-react-appSimilar Packages:

Frontend Project Scaffolding and Build Tooling

create-react-app, nx, and vue-cli are tools used to initialize and manage frontend projects, but they serve different architectural needs. create-react-app was the standard for single-page React applications, offering zero-config setup. vue-cli provided similar scaffolding and build configuration for Vue.js projects. nx is a broader build system and monorepo tool that supports React, Vue, and other frameworks, focusing on code sharing and task running across multiple projects.

Npm Package Weekly Downloads Trend

3 Years

Github Stars Ranking

Stat Detail

Package
Downloads
Stars
Size
Issues
Publish
License
nx4,205,55028,37414.9 MB462a day agoMIT
vue-cli1,93829,627-1,0718 years agoMIT
create-react-app0103,81239.3 kB2,374a year agoMIT

Create React App vs Nx vs Vue CLI: Scaffolding and Build Systems Compared

create-react-app, nx, and vue-cli are tools used to initialize and manage frontend projects, but they serve different architectural needs. create-react-app was the standard for single-page React applications. vue-cli provided similar scaffolding for Vue.js projects. nx is a broader build system and monorepo tool. Let's compare how they handle common tasks.

๐Ÿš€ Project Initialization: Single App vs Workspace

create-react-app creates a single React application with zero config.

  • You run one command to get a full React setup.
  • Best for simple, standalone projects.
# create-react-app: Initialize React app
npx create-react-app my-app

vue-cli creates a single Vue application with selectable features.

  • You choose presets like Babel or TypeScript during setup.
  • Best for legacy Vue 2 or specific Vue 3 setups.
# vue-cli: Initialize Vue app
vue create my-app

nx creates a workspace that can hold multiple apps and libraries.

  • You define a workspace type (React, Vue, Angular, or empty).
  • Best for monorepos or complex project structures.
# nx: Initialize workspace
npx create-nx-workspace@latest my-workspace

โš™๏ธ Configuration: Hidden vs Explicit vs Centralized

create-react-app hides configuration inside react-scripts.

  • You cannot change webpack settings without ejecting.
  • Ejecting is permanent and adds heavy maintenance burden.
// create-react-app: package.json
{
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build"
  }
}

vue-cli uses a dedicated config file for adjustments.

  • You can modify webpack or chain loaders in vue.config.js.
  • More flexible than CRA but still tied to Vue CLI internals.
// vue-cli: vue.config.js
module.exports = {
  configureWebpack: {
    resolve: { alias: { '@': 'src' } }
  }
};

nx uses nx.json and project.json for global and local settings.

  • You define tasks and caches centrally for the whole workspace.
  • Allows fine-grained control over build targets and dependencies.
// nx: nx.json
{
  "tasksRunnerOptions": {
    "default": {
      "runner": "nx/tasks-runners/default",
      "options": { "cacheableOperations": ["build", "test"] }
    }
  }
}

๐Ÿ“ฆ Monorepo Support: None vs None vs Core Feature

create-react-app does not support monorepos.

  • Each app lives in its own isolated folder.
  • Sharing code between apps requires publishing packages or symlinks.
# create-react-app: No monorepo command
# Developers must manually link packages or use tools like Lerna

vue-cli does not support monorepos natively.

  • Each project is independent with its own node_modules.
  • Code sharing requires external tools like Yarn Workspaces.
# vue-cli: No monorepo command
# Developers must configure workspaces manually in package.json

nx is built for monorepos from the ground up.

  • You can generate multiple apps and libraries in one workspace.
  • It understands dependencies and only builds what changed.
# nx: Generate a new app and library
nx g @nx/react:app dashboard
nx g @nx/react:lib shared-ui

๐Ÿ› ๏ธ Build and Serve: Scripts vs Tasks

create-react-app uses npm scripts wrapped by react-scripts.

  • Commands are fixed (start, build, test, eject).
  • Adding custom build steps requires ejecting or workarounds.
// create-react-app: Running build
npm run build

vue-cli uses npm scripts wrapped by @vue/cli-service.

  • Commands include serve, build, lint, and inspect.
  • You can inspect the webpack config without ejecting.
// vue-cli: Running build
npm run build

nx uses a task runner to execute commands across projects.

  • You can run builds for specific projects or affected projects.
  • Caching speeds up repeated runs significantly.
# nx: Running build for specific project
nx build my-app

โš ๏ธ Maintenance Status: Deprecated vs Maintenance vs Active

create-react-app is officially deprecated.

  • The React team no longer recommends it for new projects.
  • Security updates and feature additions have stopped.
# create-react-app: Warning on npm install
# This package has been deprecated

vue-cli is in maintenance mode.

  • The Vue team recommends create-vue (Vite based) instead.
  • Only bug fixes are provided; no new features are planned.
# vue-cli: Warning on npm install
# Vue CLI is now in maintenance mode

nx is actively maintained and updated.

  • Regular releases add support for new tools and frameworks.
  • Large community and corporate backing ensure longevity.
# nx: Active development
# Regular releases and feature updates

๐Ÿ“Š Summary: Key Differences

Featurecreate-react-appvue-clinx
Frameworkโš›๏ธ React Only๐Ÿ’š Vue Only๐ŸŒ Any (React, Vue, Angular)
MonorepoโŒ NoโŒ Noโœ… Yes
Config๐Ÿ”’ Hidden (Eject required)๐Ÿ”ง vue.config.js๐Ÿ“„ nx.json + project.json
Status๐Ÿ›‘ Deprecatedโš ๏ธ Maintenanceโœ… Active
Best For๐Ÿ•ฐ๏ธ Legacy React Apps๐Ÿ•ฐ๏ธ Legacy Vue Apps๐Ÿข Enterprise Monorepos

๐Ÿ’ก The Big Picture

create-react-app was the king of React scaffolding but is now retired. Do not use it for new work. Migrate to Vite or Next.js instead.

vue-cli served Vue developers well but is now in maintenance. Do not use it for new work. Migrate to create-vue based on Vite instead.

nx is the choice for complex setups. Use it if you need to manage multiple apps, share code efficiently, or speed up builds with caching. It works with modern tools like Vite under the hood.

Final Thought: For single apps, choose modern framework-specific tools like Vite. For multiple apps, choose nx. Avoid create-react-app and vue-cli for greenfield projects.

How to Choose: nx vs vue-cli vs create-react-app

  • nx:

    Choose nx if you are managing a monorepo with multiple applications or libraries. It is ideal for teams needing shared code, cached builds, and complex task management across React, Vue, or Node.js projects.

  • vue-cli:

    Do not choose this for new projects. It is in maintenance mode and the Vue team recommends create-vue based on Vite. Only use it for legacy Vue 2 maintenance.

  • create-react-app:

    Do not choose this for new projects. It is officially deprecated and no longer receives updates. Use Vite or Next.js instead for React development.

README for nx

Nx - Smart Monorepos ยท Fast Builds

CircleCI License NPM Version Semantic Release Commitizen friendly Join the chat at https://gitter.im/nrwl-nx/community Join us on the Official Nx Discord Server


Nx: Smart Monorepos ยท Fast Builds

Get to green PRs in half the time. Nx optimizes your builds, scales your CI, and fixes failed PRs. Built for developers and AI agents.

Getting Started

Creating an Nx Workspace

Using npx

npx create-nx-workspace

Using npm init

npm init nx-workspace

Using yarn create

yarn create nx-workspace

Adding Nx to an Existing Repository

Run:

npx nx@latest init

Documentation & Resources

Nx - Smart Monorepos ยท Fast Builds