diff --git a/packages/grafana-toolkit/src/cli/tasks/package.build.ts b/packages/grafana-toolkit/src/cli/tasks/package.build.ts index 8f210713786..7cd758fd748 100644 --- a/packages/grafana-toolkit/src/cli/tasks/package.build.ts +++ b/packages/grafana-toolkit/src/cli/tasks/package.build.ts @@ -3,9 +3,11 @@ import execa = require('execa'); import * as fs from 'fs'; // @ts-ignore import * as path from 'path'; +import { resolve as resolvePath } from 'path'; import chalk from 'chalk'; import { useSpinner } from '../utils/useSpinner'; import { Task, TaskRunner } from './task'; +import globby from 'globby'; let distDir: string, cwd: string; @@ -68,6 +70,7 @@ const preparePackage = async (pkg: any) => { const moveFiles = () => { const files = ['README.md', 'CHANGELOG.md', 'index.js']; + // @ts-ignore return useSpinner(`Moving ${files.join(', ')} files`, async () => { const promises = files.map(file => { @@ -86,6 +89,26 @@ const moveFiles = () => { })(); }; +const moveStaticFiles = async (pkg: any, cwd: string) => { + if (pkg.name.endsWith('/ui')) { + const staticFiles = await globby(resolvePath(process.cwd(), 'src/**/*.+(png|svg|gif|jpg)')); + return useSpinner(`Moving static files`, async () => { + const promises = staticFiles.map(file => { + return new Promise((resolve, reject) => { + fs.copyFile(file, `${cwd}/compiled/${file.replace(`${cwd}/src`, '')}`, (err: any) => { + if (err) { + reject(err); + return; + } + resolve(); + }); + }); + }); + + await Promise.all(promises); + })(); + } +}; interface PackageBuildOptions { scope: string; } @@ -107,6 +130,7 @@ const buildTaskRunner: TaskRunner = async ({ scope }) => { await clean(); await compile(); + await moveStaticFiles(pkg, cwd); await rollup(); await preparePackage(pkg); await moveFiles(); diff --git a/packages/grafana-ui/package.json b/packages/grafana-ui/package.json index 5b0502d9b34..48daa0475bd 100644 --- a/packages/grafana-ui/package.json +++ b/packages/grafana-ui/package.json @@ -71,6 +71,7 @@ }, "devDependencies": { "@rollup/plugin-commonjs": "11.0.2", + "@rollup/plugin-image": "2.0.4", "@rollup/plugin-node-resolve": "7.1.1", "@storybook/addon-actions": "5.3.17", "@storybook/addon-docs": "5.3.17", diff --git a/packages/grafana-ui/rollup.config.ts b/packages/grafana-ui/rollup.config.ts index c364ea7987e..8f6639a180e 100644 --- a/packages/grafana-ui/rollup.config.ts +++ b/packages/grafana-ui/rollup.config.ts @@ -1,5 +1,6 @@ import resolve from '@rollup/plugin-node-resolve'; import commonjs from '@rollup/plugin-commonjs'; +import image from '@rollup/plugin-image'; // import sourceMaps from 'rollup-plugin-sourcemaps'; import { terser } from 'rollup-plugin-terser'; @@ -71,6 +72,7 @@ const buildCjsPackage = ({ env }) => { }), resolve(), // sourceMaps(), + image(), env === 'production' && terser(), ], }; diff --git a/yarn.lock b/yarn.lock index 23c70036c05..20b15e1bee7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4354,6 +4354,14 @@ magic-string "^0.25.2" resolve "^1.11.0" +"@rollup/plugin-image@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-image/-/plugin-image-2.0.4.tgz#a9b22737684986d2299b7803b82bf87af47d41de" + integrity sha512-W23bfKBZw/k6MXks0PInxazHhbfiN5u2ySPMHFVPt2jgmACNewlV3kUR6MvpE9YEliETU5ygGetsj5SDTUW4HQ== + dependencies: + "@rollup/pluginutils" "^3.0.4" + mini-svg-data-uri "^1.1.3" + "@rollup/plugin-json@4.0.3": version "4.0.3" resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.0.3.tgz#747e2c2884c5a0fa00b66c9c0f3f1012cddca534" @@ -4379,6 +4387,15 @@ dependencies: estree-walker "^1.0.1" +"@rollup/pluginutils@^3.0.4": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.0.10.tgz#a659b9025920378494cd8f8c59fbf9b3a50d5f12" + integrity sha512-d44M7t+PjmMrASHbhgpSbVgtL6EFyX7J4mYxwQ/c5eoaE6N2VgCgEcWVzNnwycIloti+/MpwFr8qfw+nRw00sw== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@rollup/pluginutils@^3.0.8": version "3.0.9" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.0.9.tgz#aa6adca2c45e5a1b950103a999e3cddfe49fd775" @@ -8581,6 +8598,11 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" +caniuse-db@1.0.30000772: + version "1.0.30000772" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000772.tgz#51aae891768286eade4a3d8319ea76d6a01b512b" + integrity sha1-UarokXaChureSj2DGep21qAbUSs= + caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000989, caniuse-lite@^1.0.30000999: version "1.0.30000999" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000999.tgz#427253a69ad7bea4aa8d8345687b8eec51ca0e43" @@ -16997,6 +17019,11 @@ mini-css-extract-plugin@^0.7.0: schema-utils "^1.0.0" webpack-sources "^1.1.0" +mini-svg-data-uri@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.1.3.tgz#9759ee5f4d89a4b724d089ce52eab4b623bfbc88" + integrity sha512-EeKOmdzekjdPe53/GdxmUpNgDQFkNeSte6XkJmOBt4BfWL6FQ9G9RtLNh+JMjFS3LhdpSICMIkZdznjiecASHQ== + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -18667,6 +18694,11 @@ picomatch@^2.0.5: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== +picomatch@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"