From 12b66085160cdae833b2c4bf9d5b6b6875f36bea Mon Sep 17 00:00:00 2001 From: Thijs Louisse Date: Tue, 21 Jul 2020 23:35:55 +0200 Subject: [PATCH] fix(providence-analytics): allow dashboard to run within package --- .../dashboard/src/server.js | 28 ++++++++++++++++--- packages/providence-analytics/package.json | 2 +- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/packages/providence-analytics/dashboard/src/server.js b/packages/providence-analytics/dashboard/src/server.js index d53a2d3c5..e3540142f 100644 --- a/packages/providence-analytics/dashboard/src/server.js +++ b/packages/providence-analytics/dashboard/src/server.js @@ -6,6 +6,7 @@ const { LogService } = require('../../src/program/services/LogService.js'); // eslint-disable-next-line import/no-dynamic-require const providenceConf = require(`${pathLib.join(process.cwd(), 'providence.conf.js')}`); + let outputFilePaths; try { outputFilePaths = fs.readdirSync(ReportService.outputPath); @@ -38,23 +39,42 @@ outputFilePaths.forEach(fileName => { } }); +function getPackageJson(projectPath) { + let pkgJson; + try { + const file = pathLib.resolve(projectPath, 'package.json'); + pkgJson = JSON.parse(fs.readFileSync(file, 'utf8')); + } catch (_) { + // eslint-disable-next-line no-empty + } + return pkgJson; +} + function transformToProjectNames(collections) { const res = {}; // eslint-disable-next-line array-callback-return Object.entries(collections).map(([key, val]) => { - res[key] = val.map(c => pathLib.basename(c)); + res[key] = val.map(c => { + const pkg = getPackageJson(c); + return pkg && pkg.name; + }); }); return res; } const pathFromServerRootToHere = `/${pathLib.relative(process.cwd(), __dirname)}`; +// Needed for dev purposes (we call it from ./packages/providence-analytics/ instead of ./) +// Allows es-dev-server to find the right moduleDirs +const fromPackageRoot = process.argv.includes('--serve-from-package-root'); +const moduleRoot = fromPackageRoot ? pathLib.resolve(process.cwd(), '../../') : process.cwd(); + const config = createConfig({ port: 8080, - // appIndex: './dashboard/index.html', - // rootDir: process.cwd(), + appIndex: pathLib.resolve(__dirname, 'index.html'), + rootDir: moduleRoot, nodeResolve: true, - // moduleDirs: pathLib.resolve(process.cwd(), 'node_modules'), + moduleDirs: pathLib.resolve(moduleRoot, 'node_modules'), watch: false, open: true, middlewares: [ diff --git a/packages/providence-analytics/package.json b/packages/providence-analytics/package.json index 100268170..3ded48d03 100644 --- a/packages/providence-analytics/package.json +++ b/packages/providence-analytics/package.json @@ -19,7 +19,7 @@ "src" ], "scripts": { - "dashboard": "node ./dashboard/src/server.js", + "dashboard": "node ./dashboard/src/server.js --serve-from-package-root", "providence": "node --max-old-space-size=8192 ./src/cli/index.js", "test:node": "mocha './test-node/**/*.test.js'", "test:node:e2e": "mocha './test-node/program/**/*.e2e.js' --timeout 60000",