* Use grafana toolkit template for building plugin * Fix linter and type errors * Update styles building * Fix sass deprecation warning * Remove empty js files produced by webpack building sass * Fix signing script * Replace classnames with cx * Fix data source config page * Use custom webpack config instead of overriding original one * Use gpx_ prefix for plugin executable * Remove unused configs * Roll back react hooks dependencies usage * Move plugin-specific ts config to root config file * Temporary do not use rst2html for function description tooltip * Remove unused code * remove unused dependencies * update react table dependency * Migrate tests to typescript * remove unused dependencies * Remove old webpack configs * Add sign target to makefile * Add magefile * Update CI test job * Update go packages * Update build instructions * Downgrade go version to 1.18 * Fix go version in ci * Fix metric picker * Add comment to webpack config * remove angular mocks * update bra config * Rename datasource-zabbix to datasource (fix mage build) * Add instructions for building backend with mage * Fix webpack targets * Fix ci backend tests * Add initial e2e tests * Fix e2e ci tests * Update docker compose for cypress tests * build grafana docker image * Fix docker stop task * CI: add Grafana compatibility check
4.2 KiB
Default build configuration by Grafana
This is an auto-generated directory and is not intended to be changed! ⚠️
The .config/ directory holds basic configuration for the different tools
that are used to develop, test and build the project. In order to make it updates easier we ask you to
not edit files in this folder to extend configuration.
How to extend the basic configs?
Bear in mind that you are doing it at your own risk, and that extending any of the basic configuration can lead to issues around working with the project.
Extending the ESLint config
Edit the .eslintrc file in the project root in order to extend the ESLint configuration.
Example:
{
"extends": "./.config/.eslintrc",
"rules": {
"react/prop-types": "off"
}
}
Extending the Prettier config
Edit the .prettierrc.js file in the project root in order to extend the Prettier configuration.
Example:
module.exports = {
// Prettier configuration provided by Grafana scaffolding
...require('./.config/.prettierrc.js'),
semi: false,
};
Extending the Jest config
There are two configuration in the project root that belong to Jest: jest-setup.js and jest.config.js.
jest-setup.js: A file that is run before each test file in the suite is executed. We are using it to
set up the Jest DOM for the testing library and to apply some polyfills. (link to Jest docs)
jest.config.js: The main Jest configuration file that extends the Grafana recommended setup. (link to Jest docs)
ESM errors with Jest
A common issue found with the current jest config involves importing an npm package which only offers an ESM build. These packages cause jest to error with SyntaxError: Cannot use import statement outside a module. To work around this we provide a list of known packages to pass to the [transformIgnorePatterns](https://jestjs.io/docs/configuration#transformignorepatterns-arraystring) jest configuration property. If need be this can be extended in the following way:
process.env.TZ = 'UTC';
const { grafanaESModules, nodeModulesToTransform } = require('./jest/utils');
module.exports = {
// Jest configuration provided by Grafana
...require('./.config/jest.config'),
// Inform jest to only transform specific node_module packages.
transformIgnorePatterns: [nodeModulesToTransform([...grafanaESModules, 'packageName'])],
};
Extending the TypeScript config
Edit the tsconfig.json file in the project root in order to extend the TypeScript configuration.
Example:
{
"extends": "./.config/tsconfig.json",
"compilerOptions": {
"preserveConstEnums": true
}
}
Extending the Webpack config
Follow these steps to extend the basic Webpack configuration that lives under .config/:
1. Create a new Webpack configuration file
Create a new config file that is going to extend the basic one provided by Grafana.
It can live in the project root, e.g. webpack.config.ts.
2. Merge the basic config provided by Grafana and your custom setup
We are going to use webpack-merge for this.
// webpack.config.ts
import type { Configuration } from 'webpack';
import { merge } from 'webpack-merge';
import grafanaConfig from './.config/webpack/webpack.config';
const config = async (env): Promise<Configuration> => {
const baseConfig = await grafanaConfig(env);
return merge(baseConfig, {
// Add custom config here...
output: {
asyncChunks: true,
},
});
};
export default config;
3. Update the package.json to use the new Webpack config
We need to update the scripts in the package.json to use the extended Webpack configuration.
Update for build:
-"build": "webpack -c ./.config/webpack/webpack.config.ts --env production",
+"build": "webpack -c ./webpack.config.ts --env production",
Update for dev:
-"dev": "webpack -w -c ./.config/webpack/webpack.config.ts --env development",
+"dev": "webpack -w -c ./webpack.config.ts --env development",