This guide describes the dependencies of this repository and their purpose.
Package dependencies, or just regular dependencies are those packages that are needed for the library code to run properly and so are are included as part of the library's final production bundle.
Classnames is an utility that conditionally joins CSS class names together.
- classnames: Utility's core package
date-fns is a toolset for manipulating dates in JavaScript.
- date-fns: date-fns core package
Resize Observer is a polyfill for the ResizeObserver API
- @juggle/resize-observer: Polyfill's core package
Peer dependencies are package dependencies that the library depends on but are not included as part of the library's final production bundle.
Usually peer dependencies are packages that would-be users would already have or need as part of their own applications, and hence, no need to include them as part of the library code.
React is a library for building component-based user interfaces.
- react: React's core package
- react-dom: Entry point to inject React into the DOM
- prop-types: Runtime checker for React component's props
RxJS is a library for composing asynchronous and event-based programs by using observable sequences.
- rxjs: RxJS core package
Development dependencies are package dependencies used while developing library code but are not part of the library's final production bundle.
Babel is a compiler that allows developers to use new JavaScript features that are not yet available in all browsers.
- @babel/core: Compiler core package
- @babel/preset-env: Pre-set of JavaScript features babel should compile
- @babel/preset-react: Pre-set of React/JSX features babel should compile
- @babel/plugin-transform-runtime: Allows for re-use of Babel's helper code when injected as part of a bundle
commitlint checks commit messages to make sure they follow commit message guidelines.
- @commitlint/cli: commitlint core package
- @commitlint/config-conventional: commitlint enforcer of conventional commit guidelines
ESLint is a static analysis tool that enforces code styles and patterns.
- eslint: ESLint core package
- eslint-config-airbnb: Airbnb's JavaScript style guide configurations
- eslint-plugin-import: Plugin that enforces import/export styles
- eslint-plugin-jest: Plugin that enforces standard Jest styles
- eslint-plugin-jsdoc: Plugin that enforces standard JSDoc styles
- eslint-plugin-jsx-a11y: Plugin that enforces accessibility rules in JSX
- eslint-plugin-react: Plugin that enforces React's standard practices
- eslint-plugin-react-hooks: Plugin that enforces React's rules of hooks
Husky simplifies running scripts in Git hooks.
- husky - Husky core package
identity-obj-proxy is a helper module that translates non-JavaScript modules to objects. This is useful for things like mocking style imports for Jest.
- identity-obj-proxy: Core package
Jest is a testing framework and runner. Used for unit tests.
- jest: Jest core package
- jest-junit: Plugin that allows for JUnit-style reporting
MockDate is a testing utility that allows for a script to change when JavaScript's "now" date is. This is used to have a fixed date on unit tests.
- mockdate: Utility's core package
Node.js compiler for Sass. Currently used by Rollup to build production CSS style sheet and Storybook for displaying stories on the fly/compiling them.
- node-sass: Core package
Transforms React components into pure JavaScript objects. Used for snapshot testing with Jest.
- react-test-renderer: Core package
Rollup is a JavaScript module bundler.
- rollup: Rollup core package
- @rollup/plugin-babel: Plugin that integrates with Rollup with Babel
- @rollup/plugin-commonjs: Plugin that converts CommonJS modules to ES6. Most third-party packages use CommonJS.
- @rollup/plugin-node-resolve:
Plugin to locate third-party modules in
node_modules
using the Node resolution algorithm - rollup-plugin-copy: Plugin to copy files and folders
- rollup-plugin-license: Plugin that prepends legal information to distribution bundles
- rollup-plugin-scss: Plugin that allows Rollup to bundle Sass/CSS files
- rollup-plugin-terser: Plugin to create minified bundles
- rollup-plugin-visualizer: Plugin that creates visualizations of the bundle composition
semantic-release automates the versioning and release process. semantic-release using semantic versioning to find the next version. It also takes care of updating all packages, pushing back to Git and publishing to NPM.
- semantic-release: semantic-release core package
- @semantic-release/changelog: Plugin to generate the changelog
- @semantic-release/git: Plugin to commit release assets into a Git repository
Storybook is a tool that allows to showcase, document, test, etc. component libraries. Storybook uses Webpack to serve the development version of Storybook and to build assets for hosting. Because Webpack is included only for Storybook, it's packages are also described in this section.
- @storybook/react: Storybook for React components core package
- @storybook/addon-essentials: Default preset of Storybook add-ons
- @storybook/addon-actions: Displays the data received by event handlers within Storybook
- @storybook/addon-links: Allows for inter-story linking
- @storybook/addon-storyshots: Automatically creates snapshot tests from stories
- @storybook/preset-scss: Default presets for Sass/CSS configurations
- babel-loader: Allows for packages to be transpile to ES5 with Babel
- css-loader: Interprets CSS3 module features
- sass-loader: Loads and compiles Sass to CSS
- style-loader: Injects CSS into the DOM