docs/content/guides/tools-and-building/custom-builds/custom-builds.md
Handsontable's building process transforms the source files located in the code repository into dedicated packages.
[[toc]]
The Handsontable repository is a monorepo that contains the following projects:
| Project | Location | Description |
|---|---|---|
handsontable | /handsontable | Main Handsontable project |
@handsontable/react-wrapper | /wrappers/react-wrapper | React wrapper |
@handsontable/angular-wrapper | /wrappers/angular-wrapper | Angular (v16+) wrapper |
@handsontable/vue3 | /wrappers/vue3 | Vue wrapper |
Handsontable releases all projects together, under the same version number. But each project has its own building and testing processes.
The building processes transform the source files located in the /handsontable/src/ directory into the following output files:
/handsontable/dist/
/handsontable/styles/
handsontable/tmp/
::: tip
Don't modify the output files mentioned above. Instead, make changes in the /handsontable/src/ directory and then run a selected build. This is especially important if you want to contribute your changes back to Handsontable through a pull request.
For more information on the distribution packages, see this file.
:::
Handsontable building processes require:
.nvmrc in the root of the repository)packageManager field of the root's package.json)pnpm install (e.g. Rspack and Babel)package.json filesEach Handsontable project has its own building processes defined in its own package.json file. Apart from that, the root directory has its own package.json file as well:
| File | Holds tasks for building: |
|---|---|
/package.json | - All the packages at once |
/handsontable/package.json | The JavaScript package |
| /wrappers/react-wrapper/package.json | The React package |
| /wrappers/angular-wrapper/package.json | The Angular (v16+) package |
| /wrappers/vue3/package.json | The Vue package |To run your first build:
packageManager field of the root's package.json.pnpm install.
pnpm installs all required dependencies, including for the docs and examples workspaces.pnpm run build.
The script builds all Handsontable packages.You can either build all the packages at once, or build each package individually.
To build all the packages at once:
npm run build.
The script builds the following packages:
To build the JavaScript package:
/handsontable.npm run build.
Only the JavaScript package builds.To build the JavaScript package from the root directory:
npm run in handsontable build.
Only the JavaScript package builds.From the /handsontable directory, you can also run individual JavaScript build tasks:
::: details JavaScript build tasks
npm run build:commonjs
npm run build:es
npm run build:umd
/handsontable/dist/handsontable.js/handsontable/dist/handsontable.full.js/handsontable/styles/* - non-minified theme CSS filesnpm run build:umd.min
/handsontable/dist/handsontable.min.js/handsontable/dist/handsontable.min.full.js/handsontable/styles/* - minified theme CSS filesnpm run build:walkontable
npm run build:languages
/handsontable/dist/languages/de-DE.js/handsontable/dist/languages/all.jsbuild:languages.es
languages/en-US.mjsnpm run build:languages.min
/handsontable/dist/languages/de-DE.min.js/handsontable/dist/languages/all.min.js:::
To build the React package:
/wrappers/react-wrapper.npm run build.
Only the React package builds.To build the React package from the root directory:
npm run in react-wrapper build.
Only the React package builds.From the React wrapper directory, you can also run individual React build tasks:
::: details React build tasks
npm run build:commonjs
/commonjs/react-handsontable.jsnpm run build:umd
/dist/react-handsontable.js/dist/react-handsontable.js.mapnpm run build:es
/es/react-handsontable.mjsnpm run build:min
/dist/react-handsontable.min.js/dist/react-handsontable.min.js.map:::
To build the Angular package:
/wrappers/angular-wrapper.npm run build.
Only the Angular package builds.To build the Angular package from the root directory:
npm run in angular-wrapper build.
Only the Angular package builds.From the /wrappers/angular-wrapper directory, You can also run individual Angular build tasks:
::: details Angular build tasks
npm run build
@handsontable/angular-wrapper package for multiple module systems./wrappers/angular-wrapper/dist/hot-table/ directory.:::
To build the Vue package:
/wrappers/vue3.npm run build.
Only the Vue package builds.To build the Vue package from the root directory:
npm run in vue3 build.
Only the Vue package builds.From the /wrappers/vue3 directory, you can also run individual Vue build tasks:
::: details Vue build tasks
npm run build:commonjs
/wrappers/vue3/commonjs/vue-handsontable.jsnpm run build:umd
/wrappers/vue3/dist/vue-handsontable.js/wrappers/vue3/dist/vue-handsontable.js.mapnpm run build:es
/wrappers/vue3/es/vue-handsontable.mjsnpm run build:min
/wrappers/vue3/dist/vue-handsontable.min.js/wrappers/vue3/dist/vue-handsontable.min.js.map:::
::: only-for javascript
:::
</div>You now have a local build of Handsontable. The output files in handsontable/dist/ and handsontable/tmp/ reflect your source changes.