Configuration
There's a lot of configuration in nuxt
! But, it is much easier than configuring webpack
and other common tools. We will try to cover the most important parts here.
.env
We use dotenv
configuration files to configure many things at once:
We configure
nuxt
loader at build time insidenuxt.config.ts
We configure
nuxt
app with the help ofdotenv-module
We configure our
docker
image with the help ofenv_file
option
It is possible that you may miss config/.env
file because it is ignored and excluded from git
. In this case, you will just need to copy config/.env.template
and fill in all values that you need:
Make sure that config/.env
is kept secret!
API_URL
Variable API_URL
represent your API server base url. It is used as a base url for all relative urls we use to make axios
calls.
There are situations when you need to switch between different versions of your API: development or production, first version of your API or second version. The are multiple use-cases!
In this case, modify this single value inside your config/.env
file.
nuxt.config.ts
As it was already said nuxt
requires a lot of configuration.
Parts that you will need the most:
vendor
option, which specifies what packages should be packed asvendor
bundlehead
option, which specifies meta-data for yourhtml
pagesplugins
option, which specifies what files should be run before creating rootVue
instancecss
option, which specifies globalcss
optionsbuild
option, which allows extending the defaultwebpack
build configuration. Add your own loaders and plugins here in case you need them
axios
We use axios-module
for nuxt
instead of a regular axios
because there are tons of goodies that are already included: retries, loading indicators, server-side proxy calls, https
enforcement, and so on.
It is all configured under axios
key in nuxt.config.ts
. See list of available options here.
build
Currently, we extend build with several rules:
enable linting with
eslint
andstylelint
in developmentsettings handy alias for
scss
importsdisabling crazy
css
classes names during tests
generate
This option is used when we run npm run generate
.
Sometimes it is required to provide additional pages to prerender, or provide dynamic values to the dynamic pages.
See routes
key for more information.
When using spa
mode you will need to add some extra configuration due to router-module
usage.
stylelint
stylelint
is a linter for your css
, scss
, and postcss
. We use stylelint.config.js
to configure our style linter.
Its configuration specifies which styles it should use. Pretty similar to eslint
.
Basically we use two configurations: for scss
and for css-modules
.
Rules defined there are just some hacks and fixes to make our development experience better.
Read more about linting here.
jest
jest
is a test runner that is used for unit tests. We use tests/jest.config.js
to configure jest
.
It has a lot of options:
setupFiles
is used to specify which files will be executed before all testsmoduleFileExtensions
specifies which module we can safely import fromjest
transform
specifies which parsers to use when importing different filesmoduleNameMapper
is used to match ourwebpack
aliases injest
Read more about testing here.
package.json
We also configure several tools inside package.json
itself. Here's a list of these tools.
browserslist
This setting is very important. It specifies all the browsers that we use in our project.
It is required for multiple tools that are used in the project:
eslint
stylelint
postcss
To see what browsers are used in your project run: npx browserslist
Read more about queries here.
Last updated