Front-End Build

The front-end build of Suite is handled by Webpack configurations inside the suite-build package.

The folder structure is as follows:

  • configs: Contains the Webpack configuration files. base.webpack.config.ts serves as a common base for all other configurations. The other files in this folder are project specific such as web.webpack.config.ts or desktop.webpack.config.ts for suite-web and suite-desktop respectively.
  • plugins: Contains custom Webpack plugins.
  • utils: Contains various utils for the build scripts.

These Webpack configurations are using TypeScript and use the tsconfig.json file at the root of the package. This is specified via the TS_NODE_PROJECT environment variable to avoid any issues regardless of the location where the command is run.

The following commands are available in this package (using yarn run at the root of the package or yarn workspace @trezor/suite-build run at the root of the project): | Command | Description | | --- | --- | | dev:web | Runs a watch build of suite-web with development settings and serves it. | | build:web | Builds a production build of suite-web. | | dev:desktop | Runs a watch build of suite-desktop with development settings, serves it and runs the Electron wrapper. | | build:desktop | Builds a production build of suite-desktop. | | lint | Runs the linter on the package. | | type-check | Runs the TypeScript checker on the package. | | type-check:watch | Same as type-check but in watch mode. |


Aliases for imports (for example @suite-utils/features) are defined in the tsconfig.json file at the root of the project, in the compilerOptions.paths property. The values are processed at build time for the webpack configuration in order to properly resolve aliases.