🚀 Ship faster with premium components 🚀
Search documentation v1.0.0

CLI

How to install Webcore using the CLI

Source Report Issue

To start a new project with Webcore, you can use our CLI tool to bootstrap projects with a single command. Run the following in your terminal and follow the prompts to finish installation:

Terminal window
npm create webcore@latest
Only applicable to Astro
npm create webcore@latest config

Using a Template

You can also bootstrap new Webcore projects with a template using the following command:

Only applicable to Astro
npm create webcore@latest template [TemplateName] [destination]
# Use the "Portfolio" template on the current directory
npm create webcore@latest template Portfolio
# Create the "Portfolio" template in the "portfolio" directory
npm create webcore@latest template Portfolio ./portfolio

You can find the list of available templates in our GitHub repository. When using the CLI, make sure you reference the name of the template folder. You can also find more documentation about our templates in our templates library.

Adding Blocks

The CLI tool can also be used to add blocks into your project. Read our introduction on blocks to learn more about them. In a nutshell, blocks are ready to use, copy-paste components made from Webcore components, however, they are not part of the NPM package. For full control, you can copy them into your codebase. To add a new block to your project, run the following in your terminal:

Adds the Author block to your codebase
npm create webcore add Author
Adds all available blocks to your codebase
npm create webcore add all
Adds Author block to the components folder
npm create webcore add Author components
The format must match the name of the block’s folder in our GitHub repository.

API

The CLI can also be used programmatically to create Webcore projects on the fly. To get started, install the CLI as a dependency for your project:

Terminal window
npm i create-webcore
Terminal window
yarn add create-webcore

Creating new projects

You can import the create function from the package and call it with the following configuration object to generate a new Webcore project:

import { create } from 'create-webcore'
create({
dir: './my-app',
framework: 'astro',
})
PropertyDefaultPurpose
dir ./ Sets the working directory where the project will be bootstrapped.
framework astro The framework to setup. Can be one of "astro", "svelte", "react".

Creating new projects with templates

If you want to use a template for bootstrapping a new project, you can import the createTemplate function from the package and call it with the following configuration object to generate a new Webcore project with the required files:

import { createTemplate } from 'create-webcore'
const response = await createTemplate('Portfolio', './')
if (response.error) {
console.log('Error during bootstrapping project', response.error)
} else {
console.log('Project successfully created.')
}
PropertyPurpose
template The name of the template that should be used while creating the project.
outdir The output directory where the project will be bootstrapped.

The createTemplate function returns with a response object that will either contain an error field, or a success field, depending on the successfulness.

Response typeReturn valueExplanation
error outdir_not_empty Output directory is not empty.
error failed_to_fetch There was a network error while fetching the template.
error template_not_found The specified template doesn't exist.
success path The destination path where the project has been created.
succes blocks An array of blocks that have been added as dependencies.

Updating existing projects

To update existing projects you can use the createConfig function in the following way:

import { createConfig } from 'create-webcore'
const response = createConfig({
sass: '1.86.0',
ts: '5.8.2',
webcore: '1.0.0'
})
if (response.error) {
console.log('Error during updating config', response.error)
} else {
console.log('Config updated successfully')
}

You can optionally pass a configuration object to the createConfig function to set package versions for Sass, TypeScript, and Webcore itself. These will only be updated if the packages are not present inside package.json. These packages are required for Webcore to function.

PropertyPurpose
sass Sets the version number for Sass.
ts Sets the version number for TypeScript.
webcore Sets the version number of Webcore. Always defaults to the latest version.

The createConfig function also returns with a response object that will either contain an error field, or a success field, depending on the successfulness.

Response typeReturn valueExplanation
error no_package_json Could not find package.json.
error no_astro_config Could not find the Astro config file.
success packageJsonUpdated This will be set to true if new packages have been added.

Adding blocks

To add new blocks programmatically, you can call the add function in one of the following ways:

import { add } from 'create-webcore'
add('Author') // Add the specified block to your project.
add('Author', 'components') // Add Author to src/components
add('Author', 'blocks', true) // Add Author to src/blocks, overwrite file if exists
add('all') // Add all blocks
const response = await add('Author')
if (response.error) {
console.log('An error happened during adding the block', response.error)
} else {
console.log('Block has been added here:', response.path)
}

Note that the add function is asynchronous. It accepts up to three parameters:

PropertyDefaultPurpose
component - Sets the block to be added.
componentFolder blocks Sets the folder where the block should be added.
overwrite false If set to true, existing blocks will be overwritten.

To add all blocks at once, simply pass all as the first parameter. Just like createConfig, this function also returns with a response object that can have the following values:

Response typeReturn valueExplanation
error block_already_exists Block already exists. Only triggered if overwrite is not set.
error block_not_found The requested block could not be found.
error failed_to_fetch There was a network error while fetching the block.
success path Path pointing to folder where block has been added.

Request improvement for this page