* build(frontend): enable custom condition for resolving source files during dev and build * feat(packages): apply conditional name to export properties * chore(packages): add standard exports to flamegraph and prometheus * chore(packages): resolve main, module, types to built files * build(packages): clean up prepare-npm-package for custom condition changes * refactor(packages): reduce repetition in conditional exports * build(storybook): add @grafana-app/source to conditionNames * test(frontend): add grafana-app/source customCondition for jest tests * refactor(frontend): remove nested package import paths * chore(jest): use customExportConditions for source files and browser * chore(i18n): use src for ./eslint-plugin export * chore(packages): set packages tsconfigs to moduleResolution bundler * chore(packages): fix rollup builds * build(packages): build cjs as multiple files * chore(sql): reference MonitoringLogger for moduleresolution bundler to pass typecheck * chore(ui): add type refs for moduleresolution bundler to pass typecheck * feat(schema): add exports for cleaner import paths * refactor(frontend): clean up schema paths to point to exports instead of nested file paths * build(storybook): hack the builder-manager for custom conditions to resolve * build(decoupled-plugins): fix broken builds due to missing conditionNames * chore(e2e): pass condition to playwright to resolve local packages * build(frontend): fix failing build * chore(select): fix typings * style(frontend): clean up eslint suppressions * chore(packages): fix type errors due to incorrect tsconfig settings * build(generate-apis): use swc with ts-node and moduleResolution bundler * chore(cypress): add conditionNames to resolve monorepo packages * build(npm): update prepare to work with latest exports changes * build(packages): fix prepare-npm-package script * fix(e2e-selectors): update debugoverlay for data-testid change * build(packages): stop editing package.json at pack n publish time * rerun ci * chore(api-clients): use moduleResolution: bundler for customConditions support * chore(api-clients): fix generation * build(packages): remove aliasing exports, remove exports with only customConditions * Revert "refactor(frontend): clean up schema paths to point to exports instead of nested file paths" This reverts commit 7949b6ea0e60e51989d2a8149b7a24647cd68916. * revert(schema): remove exports from package so builds work * build(api-clients): fix up api-clients exports and rollup config * build(api-clients): Update generated package exports for api clients * build(schema): add overrides to cjsOutput and esmOutput so built directory structure is correct * fix(packages): use rootDirs to prevent types/src directories in built d.ts file paths * build(packages): prevent empty exports added to package.json during pack * docs(packages): update readme with custom conditions information --------- Co-authored-by: Tom Ratcliffe <tom.ratcliffe@grafana.com>
57 lines
1.6 KiB
TypeScript
57 lines
1.6 KiB
TypeScript
import { glob } from 'glob';
|
|
import { createRequire } from 'node:module';
|
|
import { fileURLToPath } from 'node:url';
|
|
import path from 'path';
|
|
import copy from 'rollup-plugin-copy';
|
|
|
|
import { cjsOutput, entryPoint, esmOutput, plugins } from '../rollup.config.parts';
|
|
|
|
const rq = createRequire(import.meta.url);
|
|
const pkg = rq('./package.json');
|
|
|
|
const [_, noderesolve, esbuild] = plugins;
|
|
|
|
export default [
|
|
{
|
|
input: entryPoint,
|
|
plugins,
|
|
output: [
|
|
// Schema still uses publishConfig to define output directory.
|
|
// TODO: Migrate this package to use exports.
|
|
cjsOutput(pkg, 'grafana-schema', { dir: path.dirname(pkg.publishConfig.main) }),
|
|
esmOutput(pkg, 'grafana-schema', { dir: path.dirname(pkg.publishConfig.module) }),
|
|
],
|
|
treeshake: false,
|
|
},
|
|
{
|
|
input: Object.fromEntries(
|
|
glob
|
|
.sync('src/raw/composable/**/*.ts')
|
|
.map((file) => [
|
|
path.relative('src', file.slice(0, file.length - path.extname(file).length)),
|
|
fileURLToPath(new URL(file, import.meta.url)),
|
|
])
|
|
),
|
|
plugins: [
|
|
noderesolve,
|
|
esbuild,
|
|
// Support @grafana/scenes that pulls in types from nested @grafana/schema files.
|
|
copy({
|
|
targets: [
|
|
{
|
|
src: 'dist/types/raw/composable/**/*.d.ts',
|
|
dest: 'dist/esm/raw/composable',
|
|
rename: (_name, _extension, fullpath) => fullpath.split(path.sep).slice(4).join('/'),
|
|
},
|
|
],
|
|
hook: 'writeBundle',
|
|
}),
|
|
],
|
|
output: {
|
|
format: 'esm',
|
|
dir: path.dirname(pkg.publishConfig.module),
|
|
},
|
|
treeshake: false,
|
|
},
|
|
];
|