mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
* build test apps with webpack * add extensions test app * update e2e tests * remove non-build test apps using amd * use @grafana/plugin-configs rather than create-plugin config * Update e2e/plugin-e2e/plugin-e2e-api-tests/as-admin-user/extensions/usePluginComponents.spec.ts Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com> * Update package.json Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com> * use run dir variable instead of hardcoded path * add dummy licence file * add separate step for building test plugins * support nested plugins * remove react-router-dom from the externals array * remove add_mode dev * lint starlark * pass license path as env variable * fix the path * chore(e2e-plugins): clean up dependencies to match core versions * refactor(e2e-plugins): prefer extending webpack plugins-config * docs(e2e-plugins): add basic info to extensions test plugin readme * update readme * change dir name from custom plugins to test plugins * change root readme * update lockfile --------- Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
import CopyWebpackPlugin from 'copy-webpack-plugin';
|
|
import grafanaConfig from '@grafana/plugin-configs/webpack.config';
|
|
import { mergeWithCustomize, unique } from 'webpack-merge';
|
|
import { Configuration } from 'webpack';
|
|
|
|
function skipFiles(f: string): boolean {
|
|
if (f.includes('/dist/')) {
|
|
// avoid copying files already in dist
|
|
return false;
|
|
}
|
|
if (f.includes('/node_modules/')) {
|
|
// avoid copying tsconfig.json
|
|
return false;
|
|
}
|
|
if (f.includes('/package.json')) {
|
|
// avoid copying package.json
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
const config = async (env: Record<string, unknown>): Promise<Configuration> => {
|
|
const baseConfig = await grafanaConfig(env);
|
|
const customConfig = {
|
|
plugins: [
|
|
new CopyWebpackPlugin({
|
|
patterns: [
|
|
// To `compiler.options.output`
|
|
{ from: 'README.md', to: '.', force: true },
|
|
{ from: 'plugin.json', to: '.' },
|
|
{ from: 'CHANGELOG.md', to: '.', force: true },
|
|
{ from: '**/*.json', to: '.', filter: skipFiles },
|
|
{ from: '**/*.svg', to: '.', noErrorOnMissing: true, filter: skipFiles }, // Optional
|
|
],
|
|
}),
|
|
],
|
|
};
|
|
|
|
return mergeWithCustomize({
|
|
customizeArray: unique('plugins', ['CopyPlugin'], (plugin) => plugin.constructor && plugin.constructor.name),
|
|
})(baseConfig, customConfig);
|
|
};
|
|
|
|
export default config;
|