npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

material-cli

v0.0.3

Published

Build Material UI apps 10x faster with material-ui-cli ⚡

Downloads

4

Readme

mui_cli

Table of Contents

Material-UI CLI: Streamlining Your Development Workflow

The Material-UI CLI is a powerful command-line interface tool designed to significantly streamline and enhance the development process with Material-UI, a renowned React UI framework. This CLI tool simplifies the initialization of new projects, the generation and validation of theme files, and the scaffolding of popular Material-UI components, thereby allowing developers to focus on creating exceptional user interfaces without getting bogged down by the setup and configuration process.

✨ Comprehensive Feature Set

  • Project Initialization: Kickstart your development with a new React, Vite or Next.js project, pre-configured with Material-UI dependencies, allowing for a smooth and rapid setup.
  • Theme Generation: Easily generate a theme file for your project, customizable with primary, secondary, error, warning, info, and success color options, laying the foundation for a consistent design system.
  • Theme Validation: Ensure your theme file adheres to Material-UI's theming guidelines, with options to validate palette, typography, spacing, breakpoints, and transitions, thus guaranteeing a polished and error-free UI.
  • Component Scaffolding: Choose from a wide array of popular Material-UI components to scaffold into your project, organized neatly within your project structure, saving you the hassle of manual setup and configuration.

📦 Installation

npm i -g material-cli

🚀 Usage

1. 🦾 Create new project.

To initialize a new project, first, navigate to the desired folder, then:

material-cli project-init

You will be then prompted with questions to select:

  • Project name
  • Your preferred tool: React, Vite or Next.js
  • Your preferred architecture: Monorepo or Polyrepo
  • Popular MUI components you want to scaffold to your project.

If everything proceeded smoothly, you'll receive a confirmation message indicating that your project setup is complete. Navigate to the project directory and execute the reccomended script command.

Initializing a new project with the MUI CLI offers several advantages:

  • ⚡ Choose your preffered tool to use between CRA, Vite and Next.js.
  • 🌐 Choose your preffered architecture between Monorepo and Polyrepo.
  • 🚀 Experience faster project initialization for CRA over the conventional CRA Command method.
  • 📦 Automatically installs all Material UI-related dependencies, including MUI icons.
  • ✅ Allows selection of specific Material UI components to scaffold into your project.
  • ⚙️ Automatically generates a theme file.
  • 🎨 Comes with pre-configured Material UI theming for both React, Vite and Next.js projects.
  • 🌟 Lets you focus more on development rather than setup.

The downside of using MUI CLI to initialize your project includes:

  • ⚠️ The scaffolded MUI components are written in JavaScript, which could be a downside for those using TypeScript.

The MUI CLI team is actively exploring the best ways to address these issues promptly to facilitate smoother development.

2. ⚙️ Generate theme file to an existing project.

Ensuring adherence to the correct MUI theming guidelines can sometimes be challenging. With MUI CLI, you can effortlessly generate a theme file that you can then customize to your preferences. To generate a theme file for your existing project, simply execute the following command:

material-cli theme-init [options]

The following options can be passed to the command:

| Option | Description | | ---------------------------- | ---------------------- | | -p, --primary (optional) | Primary color option | | -s, --secondary (optional) | Secondary color option | | -e, --error (optional) | Error color option | | -w, --warning (optional) | Warning color option | | -i, --info (optional) | Info color option | | -x, --success (optional) | Success color option |

The theme.js file will be generated under src > Theme folder in your project. Note that only palette options can be passed as option.

3. 🔍 Validate theme file in existing project.

You can easily inspect your theme file to identify any potential errors or warnings that might have been overlooked. To inspect your theme file, simply execute the following command:

material-cli theme-validate [options]

The following options can be passes to the command:

| Option | Description | | ------------------------------- | --------------------------------------- | | -p, --palette (optional) | Validate palette in your theme file | | -t, --typography (optional) | Validate typography in your theme file | | -s, --spacing (optional) | Validate spacing in your theme file | | -b, --breakpoints (optional) | Validate breakpoints in your theme file | | -tr, --transitions (optional) | Validate transitions in your theme file | | --path (optional) | Path to your theme file | | --ignore-warn (optional) | dont show warning |

If the path option is not provided, you will be prompted with a question to specify the path to your theme file.

If no other options are passed, all properties in your theme will be validated by default.

Upon inspecting your theme file, any potential errors will be displayed in your console, along with any potential warnings. To disregard warnings, you can include the --ignore-warn flag in the command.

[!NOTE] The contents of the theme file should be a function that returns the theme object. If the theme file is not a function, an error will occur. This is one of the limitations we are working to resolve.

The theme file can have the following format:

const themeConfig = () => ({
  // Theme contents
});

4. ✂️ Component Scaffolding

Simplify your development workflow with automated component creation. The MUI CLI allows you to quickly scaffold reusable components into your project, accelerating development and ensuring consistency throughout your application.

These components adhere to MUI guidelines and are highly customizable. Explore all supported components here

To scaffold a specific component into your project, execute the following command:

material-cli install <componentName>

Upon running this command, you'll be prompted to specify the path where you want your component to be scaffolded. The default path is scr/components/<componentsName>

🧩 Supported MUI components

Below is a list of supported components, categorized for ease of understanding and integration.

| Component | Description | Category | | ---------------------------------- | ------------------------------------------------------------------------ | ----------- | | App Bar | Popular Material UI component for app bars. | Surfaces | | AutoComplete | Material UI component providing autocomplete functionality. | Inputs | | Data Grid | Material UI component for displaying data grids. | DataDisplay | | Dates | Material UI component for selecting dates. | Inputs | | Select | Material UI component for selecting options from a list. | Inputs | | Tabs | Material UI component for organizing content into tabs. | Navigation | | Text Field | Material UI component for text input fields. | Inputs | | Alert | Material UI component for displaying alerts. | Feedback | | Dialog | Material UI component for displaying dialog boxes. | Feedback | | Linear Progress | Material UI component for indicating progress linearly. | Feedback | | Snackbar | Material UI component for displaying snackbars. | Feedback | | Accordion | Material UI component for creating accordion-style content. | Surfaces | | Android Switch | Material UI component for switches styled like those on Android devices. | Switch | | Ant Switch | Material UI component for switches styled like those in Ant Design. | Switch | | iOS Switch | Material UI component for switches styled like those on iOS devices. | Switch | | MUI Switch | Material UI default switch component. | Switch |

Components are organized under the src/Components directory, with each having its designated folder for easy management and accessibility.