Skip to main content

experiments

With experimental settings you can try some of the new features and options that are not stable for now, but capable to improve usage of cli in some way.

Experimental flags are provided in tramvai.json and should be passed separately for server and build configurations.

tramvai.json:

{
"$schema": "./node_modules/@tramvai/cli/schema.json",
"projects": {
"app": {
"name": "app",
"root": "src",
"type": "application",
"experiments": {
"minicss": {
"useImportModule": true
},
"webpack": {
"cacheUnaffected": true
},
"transpilation": {
"loader": {
"development": "swc",
"production": "babel"
}
}
}
}
}
}

CLI settings

serverRunner

  • serverRunner="process"|"thread" - use different ways to run the server app in development mode. "thread" most of the time is faster, but might lead to some bugs, especially when running cli though nodejs api

Defaults

  • serverRunner="thread" - if you get any problems, can switch to "process", it is not experimental and can be safely used

Webpack settings

Webpack by itself has a list of experimental flags which might be passed directly to webpack through experiments.webpack.

Defaults

  • cacheUnaffected=true - should improve build performance in development mode

minicss

Flags are specified through experiments.minicss and allows to enable experimental settings for mini-css-extract-plugin

  • useImportModule - enables a special way to compile css modules that should improve build time and decrease memory usage. More details in the official docs

Defaults

  • useImportModule=true - enabled by default as this improves build time and provides better css related error descriptions

transpilation

Settings for the js-ts transpilation process

  • loader="babel"|"swc" - use specific transpiler

swc

To use loader="swc" you need to install special integration package:

npx tramvai add --dev @tramvai/swc-integration

Defaults

  • loader="babel" - babel in not experimental setup and can be safely used

minifier

Settings for the minification process

  • minifier="terser"|"swc" - use specific minifier for terser webpack plugin.

Defaults

  • minifier="terser" - terser is default minifier for terser plugin

Auto generation declareAction's name attribute

As you know name attribute should be unique across your application. You can auto generate them by opting-in this feature

  • "enableFillDeclareActionNamePlugin": true - to turn auto generating on. Right now it works only when loader="babel"