From 97e33b5da433ca0daa017f630ade4a0604371687 Mon Sep 17 00:00:00 2001 From: Gilles De Mey Date: Wed, 18 Jun 2025 17:06:57 +0200 Subject: [PATCH] Alerting: Add rollup config for package (#106326) --- packages/grafana-alerting/package.json | 37 ++++++++++++++---- packages/grafana-alerting/rollup.config.ts | 19 ++++++++++ packages/grafana-alerting/src/index.ts | 4 +- packages/grafana-alerting/tsconfig.build.json | 2 +- packages/grafana-alerting/tsconfig.json | 2 +- yarn.lock | 38 +++++++++++++++---- 6 files changed, 85 insertions(+), 17 deletions(-) create mode 100644 packages/grafana-alerting/rollup.config.ts diff --git a/packages/grafana-alerting/package.json b/packages/grafana-alerting/package.json index 1d88fe53f76..d02050db6ac 100644 --- a/packages/grafana-alerting/package.json +++ b/packages/grafana-alerting/package.json @@ -2,8 +2,7 @@ "author": "Grafana Labs", "license": "Apache-2.0", "name": "@grafana/alerting", - "version": "12.0.0-pre", - "private": true, + "version": "12.1.0-pre", "description": "Grafana Alerting Library – Build vertical integrations on top of the industry-leading alerting solution", "keywords": [ "typescript", @@ -15,13 +14,14 @@ "sideEffects": false, "repository": { "type": "git", - "url": "http://github.com/grafana/grafana.git", + "url": "git+http://github.com/grafana/grafana.git", "directory": "packages/grafana-alerting" }, "main": "src/index.ts", "types": "src/index.ts", "module": "src/index.ts", "exports": { + "./package.json": "./package.json", ".": { "import": "./src/index.ts", "require": "./src/index.ts" @@ -39,12 +39,28 @@ "require": "./src/testing.ts" } }, + "publishConfig": { + "main": "./dist/cjs/index.cjs", + "module": "./dist/esm/index.mjs", + "types": "./dist/types/index.d.ts", + "access": "public" + }, + "files": [ + "./dist", + "./README.md", + "./CHANGELOG.md", + "./LICENSE_APACHE2" + ], "scripts": { + "build": "tsc -p ./tsconfig.build.json && rollup -c rollup.config.ts --configPlugin esbuild", + "bundle": "rollup -c rollup.config.ts --configPlugin esbuild", + "clean": "rimraf ./dist ./compiled ./unstable ./package.tgz", "typecheck": "tsc --emitDeclarationOnly false --noEmit", - "codegen": "rtk-query-codegen-openapi ./scripts/codegen.ts" + "codegen": "rtk-query-codegen-openapi ./scripts/codegen.ts", + "prepack": "cp package.json package.json.bak && ALIAS_PACKAGE_NAME=unstable node ../../scripts/prepare-npm-package.js", + "postpack": "mv package.json.bak package.json && rimraf ./unstable" }, "devDependencies": { - "@faker-js/faker": "^9.7.0", "@grafana/test-utils": "workspace:*", "@grafana/tsconfig": "^2.0.0", "@rtk-query/codegen-openapi": "^2.0.0", @@ -57,17 +73,24 @@ "react": "18.3.1", "react-dom": "18.3.1", "react-redux": "^9.2.0", + "rimraf": "^6.0.1", + "rollup": "^4.22.4", + "rollup-plugin-esbuild": "6.2.0", + "rollup-plugin-node-externals": "^8.0.0", "type-fest": "^4.40.0", "typescript": "5.7.3" }, "peerDependencies": { - "@grafana/runtime": "^12.0.0-pre", - "@grafana/ui": "^12.0.0-pre", + "@grafana/runtime": ">=11.6 <= 12.x", + "@grafana/ui": ">=11.6 <= 12.x", "@reduxjs/toolkit": "^2.8.0", + "msw": "^2.0.0", "react": "^18.0.0", "react-dom": "^18.0.0" }, "dependencies": { + "@faker-js/faker": "^9.8.0", + "fishery": "^2.3.1", "lodash": "^4.17.21" } } diff --git a/packages/grafana-alerting/rollup.config.ts b/packages/grafana-alerting/rollup.config.ts new file mode 100644 index 00000000000..bd1384bbe21 --- /dev/null +++ b/packages/grafana-alerting/rollup.config.ts @@ -0,0 +1,19 @@ +import { createRequire } from 'node:module'; + +import { cjsOutput, entryPoint, esmOutput, plugins } from '../rollup.config.parts'; + +const rq = createRequire(import.meta.url); +const pkg = rq('./package.json'); + +export default [ + { + input: entryPoint, + plugins, + output: [cjsOutput(pkg), esmOutput(pkg, 'grafana-alerting')], + }, + { + input: 'src/unstable.ts', + plugins, + output: [cjsOutput(pkg), esmOutput(pkg, 'grafana-alerting')], + }, +]; diff --git a/packages/grafana-alerting/src/index.ts b/packages/grafana-alerting/src/index.ts index ee4141e38d0..70a654fcd29 100644 --- a/packages/grafana-alerting/src/index.ts +++ b/packages/grafana-alerting/src/index.ts @@ -6,4 +6,6 @@ * * Breaking changes should be avoided to maintain backwards compatibility for consumers of this package. */ -export default {}; + +// This is a dummy export so typescript doesn't error importing an "empty module" +export const index = {}; diff --git a/packages/grafana-alerting/tsconfig.build.json b/packages/grafana-alerting/tsconfig.build.json index 54309163ebc..d9b5f4c09e2 100644 --- a/packages/grafana-alerting/tsconfig.build.json +++ b/packages/grafana-alerting/tsconfig.build.json @@ -1,4 +1,4 @@ { - "exclude": ["dist", "node_modules", "test", "**/*.test.ts*"], + "exclude": ["dist", "node_modules", "tests", "**/*.test.ts*"], "extends": "./tsconfig.json" } diff --git a/packages/grafana-alerting/tsconfig.json b/packages/grafana-alerting/tsconfig.json index aeb77e3b064..e2fb19bd649 100644 --- a/packages/grafana-alerting/tsconfig.json +++ b/packages/grafana-alerting/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "jsx": "react-jsx", - "declarationDir": "./compiled", + "declarationDir": "./dist/types", "emitDeclarationOnly": true, "isolatedModules": true, "rootDirs": ["."], diff --git a/yarn.lock b/yarn.lock index 2e13d25049b..3a2ff2f55ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2320,13 +2320,20 @@ __metadata: languageName: node linkType: hard -"@faker-js/faker@npm:^9.0.0, @faker-js/faker@npm:^9.7.0": +"@faker-js/faker@npm:^9.0.0": version: 9.7.0 resolution: "@faker-js/faker@npm:9.7.0" checksum: 10/5167cc179bbf5f140b957f600af24772ca8c6e7e42405c312c25a6b4278b851b84bd8e3065f80e667dd4c35dd5aeb0ed490b0b1872f908d58ffae1cef9a5ef72 languageName: node linkType: hard +"@faker-js/faker@npm:^9.8.0": + version: 9.8.0 + resolution: "@faker-js/faker@npm:9.8.0" + checksum: 10/d7d7940ba7f2bd0d266d507bb7a33ec5099654da624dc8647d7cfd2e908b75ba06ed7dd0ec3b771a18600a734f420370b3cecd1ee5d4799993b1ee3505f866d8 + languageName: node + linkType: hard + "@fingerprintjs/fingerprintjs@npm:^3.4.2": version: 3.4.2 resolution: "@fingerprintjs/fingerprintjs@npm:3.4.2" @@ -2954,7 +2961,7 @@ __metadata: version: 0.0.0-use.local resolution: "@grafana/alerting@workspace:packages/grafana-alerting" dependencies: - "@faker-js/faker": "npm:^9.7.0" + "@faker-js/faker": "npm:^9.8.0" "@grafana/test-utils": "workspace:*" "@grafana/tsconfig": "npm:^2.0.0" "@rtk-query/codegen-openapi": "npm:^2.0.0" @@ -2964,16 +2971,22 @@ __metadata: "@types/lodash": "npm:^4" "@types/react": "npm:18.3.18" "@types/react-dom": "npm:18.3.5" + fishery: "npm:^2.3.1" lodash: "npm:^4.17.21" react: "npm:18.3.1" react-dom: "npm:18.3.1" react-redux: "npm:^9.2.0" + rimraf: "npm:^6.0.1" + rollup: "npm:^4.22.4" + rollup-plugin-esbuild: "npm:6.2.0" + rollup-plugin-node-externals: "npm:^8.0.0" type-fest: "npm:^4.40.0" typescript: "npm:5.7.3" peerDependencies: - "@grafana/runtime": ^12.0.0-pre - "@grafana/ui": ^12.0.0-pre + "@grafana/runtime": ">=11.6 <= 12.x" + "@grafana/ui": ">=11.6 <= 12.x" "@reduxjs/toolkit": ^2.8.0 + msw: ^2.0.0 react: ^18.0.0 react-dom: ^18.0.0 languageName: unknown @@ -9268,7 +9281,18 @@ __metadata: languageName: node linkType: hard -"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.21, @types/express-serve-static-core@npm:^4.17.33": +"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": + version: 4.17.33 + resolution: "@types/express-serve-static-core@npm:4.17.33" + dependencies: + "@types/node": "npm:*" + "@types/qs": "npm:*" + "@types/range-parser": "npm:*" + checksum: 10/47ee1b46be710ae6451a2e658e2eab75f4affe874b0d156a31e792db0ddb35184ac7b35be926eb23424cc45f6e0d3dbacc86ac5d63a3c988d8235aedb1143841 + languageName: node + linkType: hard + +"@types/express-serve-static-core@npm:^4.17.21": version: 4.19.6 resolution: "@types/express-serve-static-core@npm:4.19.6" dependencies: @@ -17059,7 +17083,7 @@ __metadata: languageName: node linkType: hard -"fishery@npm:^2.2.2": +"fishery@npm:^2.2.2, fishery@npm:^2.3.1": version: 2.3.1 resolution: "fishery@npm:2.3.1" dependencies: @@ -27733,7 +27757,7 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:6.0.1": +"rimraf@npm:6.0.1, rimraf@npm:^6.0.1": version: 6.0.1 resolution: "rimraf@npm:6.0.1" dependencies: