This project is setup as a mono-repo and leverages lerna to manage the multiple NPM packages. All packages are configured to be versioned together; meaning regardless of whether an individual package has changed, they all will be published with the same version. Package directories are defined in both ./lerna.json and in the root package.json:
// lerna.json
{
"packages": [...]
}
// root package.json
{
"workspaces": [...]
}
All packages contain their own package.json that defines their dependencies. Only non-dev dependencies are in a package's package.json, while dev dependencies is located in the root package.json (see managing dependecies for more information).
Located in ./packages/components, this package is the relevant package and will contain vast majority of your development work. It contains all components that will be used by consumers; VersionOne and Continuum.
Located in the ./build directory, these packages are not compiled via babel and therefore they are commonjs modules. These are used for the build of other packages/the docs site.
This project uses yarn and lerna to manage NPM package dependencies.
remember: this is a mono-repo and there are multiple packages in this repo; therefore you will need to specify which package the new dependency will be installed
yarn lerna add --scope @versionone/components dependency-pkg-name to install dependencies into the components packageyarn add -W --dev dependency-pkg-name to install a dev dependencyWhich package to install a new NPM package into is specified with the --scope CLI parameter. Most of the time, this scope will be @versionone/components, but in the case that a new NPM package is required for another package in the repo, we can specify the --scope to something else. Examples below:
yarn lerna add --scope @versionone/pkg-name dependency-pkg-name to install dependencies into a specific packageyarn lerna add --scope @versionone/pkg-name @versionone/other-pkg-nameyarn start - locally run docs site: http://localhost:3000yarn test:e2e - run sub-set of cypress tests for development/debugging purposesyarn test:e2e:cli - run all e2e tests from CLIyarn lint - lint source filesyarn verify - run both tests and linting concurrently (quickly verify changes before issuing PR)Cypress is used for our end-to-end tests. All Cypress tests live in the ./cypress/integration directory.
yarn startyarn cypress open will open the cypress windowThe docs site is built with docz and its configuration may be found in ./doczrc.js.