Configurations

This package also exposes a set of built-in configurations for the tools it uses. This way allow extending and overriding configurations.

These are the exposed configurations:

Configuration

Description

Babel

Used to compile plugins

Babel legacy

Used to compile plugins keeping support for legacy browsers

ESLint

Used for identifying and reporting on patterns found in ECMAScript, JavaScript, and TypeScript code.

lint-staged

Used for running linters on git staged files.

ESLint ignore

ESLint ignoring file

Prettier

Used for code formatting

Prettier ignore

Prettier ignoring file

Rollup

Requires advanced configuration

Husky

Used for git hooks

Webpack

Requires advanced configuration

Jest

Jest configuration

 

babel.config.js

Default Babel configuration used to compile plugins. We encourage to use it.

Copy
const babelConfig = require('@pos-web/devkit-scripts/config/babel.config');

babel.config-legacy.js

Babel configuration used to compile plugins keeping support for legacy browsers (e.g., Chrome v49, IE11).

Copy
const babelConfig = require('@pos-web/devkit-scripts/config/babel.config-legacy');

eslint.config.js

Default ESLint configuration used for identifying and reporting on patterns found in ECMAScript, JavaScript, and TypeScript code.

Copy
// This default configuration file is using `@pos-web/eslint-config` under the hood.
const eslintConfig = require('@pos-web/devkit-scripts/config/eslint.config.js');

Extending at you .eslintrc.js or eslint.config.js:

Copy
module.exports = {
  extends: ['@pos-web/eslint-config'],
};

lint-staged.config.js

Default lint-staged configuration used for running linters on git staged files.

Copy
const lintStagedConfig = require('@pos-web/devkit-scripts/config/lint-staged.config.js');

eslintignore

Default ESLint ignoring file.

It is not a javascript file, so it is only used as a built-in fallback in case there is no other custom configuration. It can not be imported for extending it, just overridden by a custom configuration.

prettier.config.js

Default Prettier configuration used for code formatting.

Copy
const prettierConfig = require('@pos-web/devkit-scripts/config/prettier.config');

prettierignore

Default Prettier ignoring file.

It is not a javascript file, so it is only used as a built-in fallback in case there is no other custom configuration. It can not be imported for extending it, just overridden by a custom configuration.

rollup.config.js

Default Rollup configuration. It requires advanced configuration. So we discourage to use it. But it can be useful if you'd like to extend it.

Copy
const rollupConfig = require('@pos-web/devkit-scripts/config/rollup.config');

husky.config.js

Default Husky configuration used for git hooks.

webpack.config.js

Default Webpack configuration. It requires advanced configuration. So we discourage to use it. But it can be useful if you'd like to extend it (using webpack-merge is recommended).

Copy
const webpackConfig = require('@pos-web/devkit-scripts/config/webpack.config');

jest.config.js

Default Jest configuration.

Copy
const jestConfig = require('@pos-web/devkit-scripts/config/jest.config');

If you need to extend the configuration, create a jest.config.js in the root of your project and add your custom configuration:

Copy
const jestConfig = require('@pos-web/devkit-scripts/config/jest.config');

module.exports = {
  ...jestConfig,
  setupFiles: [...jestConfig.setupFiles, './jest.setup.js'],
  resolver: './custom-resolver.js',
  // add more custom configurations
};

Debugging with Visual Studio Code

To automatically launch and attach to a process running your tests, use the following configuration in .vscode/launch.json:

Copy
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Jest run all tests",
      "program": "${workspaceRoot}/node_modules/.bin/devkit-scripts",
      "args": ["test", "--runInBand"],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "windows": {
        "program": "${workspaceRoot}/node_modules/@pos-web/devkit-scripts/bin/devkit-scripts.js"
      }
    },
    {
      "type": "node",
      "request": "launch",
      "name": "Jest Current File",
      "program": "${workspaceRoot}/node_modules/.bin/devkit-scripts",
      "args": ["test", "${relativeFile}"],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "windows": {
        "program": "${workspaceRoot}/node_modules/@pos-web/devkit-scripts/bin/devkit-scripts.js"
      }
    }
  ]
}

More information on Jest debugging can be found here.