Creating Components
Once you have initialized a Bit workspace you can create components using the bit create
command. Alternatively you can add pre-existing components using the bit add
command.
#
Quick GuideFor those that don't like reading docs feel free to follow the quick guide at the top of each page.
- Create an example component and add it to the workspace
bit create react-component ui/button # TypeScriptbit create react-component-js ui/button # JavaScript
- Install dependencies for test files
bit install @testing-library/react
- Compile and then start the dev server
bit compilebit start
#
Create New ComponentsUse bit create
to create an example button component with the namespace of ui
. This will also create a package in your workspace node_modules
directory and add your component to the workspace UI. It will also add your component to the bitmap
file.
To see a list of all available templates run the
bit templates
command.
- TypeScript
- JSX
bit create react-component ui/button
bit create react-component-js ui/button
is the same as using the --namespace
flag:
- TypeScript
- JSX
bit create react-component button --namespace ui
bit create react-component-js button --namespace ui
The following message will appear in the terminal and your component will be created at the location specified and using the env that has been set in your workspace.jsonc
.
the following 1 component(s) were created
my-scope/ui/button location: my-scope/ui/button env: teambit.react/react
tip
Use bit create --help
or bit create -h
to get a list of available options for this command.
#
Install DependenciesOur component contains a spec.tsx
file that includes a dependency for Testing Library. If you don't already have this library installed you can install dependencies using bit install
:
bit install @testing-library/react
#
Create Multiple ComponentsCreate multiple components by adding more component names after the command.
- TypeScript
- JSX
bit create react-component ui/component1 ui/component2 design/component1
bit create react-component-jsx ui/component1 ui/component2 design/component1
Reset DevServer
You will need to reset the Dev Server every time you use bit-create
. We are working on this.
#
Bit TemplatesTo see a list of component templates available:
bit templates
If you would like to create your own component template generator then check out our guide in Extending Bit
#
Add Pre-existing ComponentsEach component in a Bit workspace must have all its implementation files under the same directory. A component must have an entry file (index.[ts|js]
is used as the default.
my-componentโโโ index.tsโโโ my-component.compositions.tsxโโโ my-component.docs.mdโโโ my-component.ts
To add your component to the workspace run the bit add
command followed by the namespace. The namespace is the component folder structure you would like to see in your workspace.
bit add button --namespace ui
For recommendations on how to add pre-existing components see our pre-existing components guide
#
Add Multiple ComponentsTo track multiple components, set the path to the common directory and use the *
wildcard.
bit add path/to/common/path/*
#
NamespacesNamespaces serve as folders that organize components in the Workspace or inside a scope on bit.dev. You can use namespaces inside a scope to group related components.
To namespace a component use the --namespace
or -n
option.
Specifying a namespace helps you organize your components and lets you perform actions on multiple components at once. Namespaces are also useful in specifying overriding rules for all components under a specific namespace.
#
Component LocationComponents are created in a directory using the name configured in your defaultScope in your workspace.jsonc. The defaultScope should be configured as your username.scope-name
and cannot contain a /
. If you would like to change the default behavior of where you components are created you should use the --path
flag.
bit create react-component ui/button --path bit/components
Organizing your Components
We don't recommend creating Bit components in your apps src/components folder. You should build components as if they were external modules, as if your components were in a different app.
#
Bitmap FileAfter adding a component the .bitmap
file will be regenerated to show the added component. For now the scope and version will be empty. Below is an example of button component created with the ui namespace.
- TypeScript
- JSX
/* THIS IS A BIT-AUTO-GENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. */
{ "ui/button": { "scope": "", "version": "", "mainFile": "index.ts", "rootDir": "my-scope/ui/button" }, "version": "1.0.39"}
/* THIS IS A BIT-AUTO-GENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. */
{ "ui/button": { "scope": "", "version": "", "mainFile": "index.js", "rootDir": "my-scope/ui/button" }, "version": "1.0.39"}
my-scope
Components are created under the default scope name which in this case is my-scope
. You can configure the default scope name in the workspace.jsonc
file.
#
Show ComponentUse the bit show
command followed by your ComponentID to see all details about the component including the env, the files and the dependencies.
bit show ui/button
tip
Use bit show --help
or bit show -h
to get a list of available options for this command.
- TypeScript
- JSX
โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ id โ my-scope/ui/button โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ scope โ my-scope โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ name โ ui/button โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ env โ teambit.react/react โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ package name โ @my-scope/ui.button โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ main file โ index.ts โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ files โ button.composition.tsx โ โ โ button.docs.mdx โ โ โ button.tsx โ โ โ button.spec.tsx โ โ โ index.ts โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ dev files โ button.docs.mdx (teambit.docs/docs) โ โ โ button.spec.tsx (teambit.defender/tester) โ โ โ button.composition.tsx (teambit.compositions/compositions) โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ extensions โ teambit.react/react โ โ โ teambit.component/dev-files โ โ โ teambit.compositions/compositions โ โ โ teambit.pkg/pkg โ โ โ teambit.docs/docs โ โ โ teambit.envs/envs โ โ โ teambit.dependencies/dependency-resolver โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ dependencies โ core-js@3.8.3- (package) โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ dev โ @testing-library/react@11.2.6- (package) โ โ dependencies โ @babel/runtime@7.12.18-------- (package) โ โ โ @types/react-router-dom@5.1.7- (package) โ โ โ @types/jest@26.0.20----------- (package) โ โ โ @types/react@16.9.43---------- (package) โ โ โ @types/node@12.20.4----------- (package) โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ peer โ react@16.13.1----- (package) โ โ dependencies โ react-dom@16.13.1- (package) โ โโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ id โ my-scope/ui/button โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ scope โ my-scope โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ name โ ui/button โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ env โ teambit.react/react โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ package name โ @my-scope/ui.button โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ main file โ index.js โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ files โ button.composition.jsx โ โ โ button.docs.mdx โ โ โ button.jsx โ โ โ button.spec.jsx โ โ โ index.js โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ dev files โ button.docs.mdx (teambit.docs/docs) โ โ โ button.spec.jsx (teambit.defender/tester) โ โ โ button.composition.jsx (teambit.compositions/compositions) โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ extensions โ teambit.react/react โ โ โ teambit.component/dev-files โ โ โ teambit.compositions/compositions โ โ โ teambit.pkg/pkg โ โ โ teambit.docs/docs โ โ โ teambit.envs/envs โ โ โ teambit.dependencies/dependency-resolver โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ dependencies โ core-js@3.8.3- (package) โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ dev โ @testing-library/react@11.2.6- (package) โ โ dependencies โ @babel/runtime@7.12.18-------- (package) โ โ โ @types/react-router-dom@5.1.7- (package) โ โ โ @types/jest@26.0.20----------- (package) โ โ โ @types/react@16.9.43---------- (package) โ โ โ @types/node@12.20.4----------- (package) โ โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ peer โ react@16.13.1----- (package) โ โ dependencies โ react-dom@16.13.1- (package) โ โโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
#
Starting the Dev ServerThe start command starts our dev server, and watches for changes using Hot Module Replacement. It runs different workspace tasks through workers, such as testing, linters and any workspace tasks that are defined by the component.
Compile Components
If you created or added a new component, you will need to compile before running the server. If you are following along this guide, you should run bit compile
to compile your newly created components.
bit compilebit start
This will open-up your browser on localhost:3000, or any other available port, and display your workspace with your components.
Building the UI
The first time you run the start command it can take a bit of time as it needs to build the whole UI.
tip
Use bit start --help
or bit start -h
to get a list of available options for this command.
#
FAQ#
1 issue found with this component?Run bit status
in the terminal to get a better understanding of what the issue is and what steps to take.
#
What's Next?Once you have created and added your component to the workspace the next step is to render the Workspace UI so you can see the component locally.
Learn more about tracking components and removing components