Skip to content

Commit

Permalink
refactor: remove package.json post build step
Browse files Browse the repository at this point in the history
populate all sub-packages with required metadata
closes #848

Signed-off-by: Vojtech Masek <[email protected]>
  • Loading branch information
vmasek committed Oct 16, 2024
1 parent ee07987 commit 80c8007
Show file tree
Hide file tree
Showing 12 changed files with 329 additions and 75 deletions.
67 changes: 0 additions & 67 deletions esbuild.config.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
const { readFile, writeFile, stat } = require('node:fs/promises');
const { exec } = require('node:child_process');
const { promisify } = require('node:util');

Expand Down Expand Up @@ -54,71 +53,5 @@ module.exports = {
});
},
},
{
name: 'PackageJSON',
setup(build) {
build.onEnd(async result => {
if (result.errors.length > 0) return;

const project = await getNxProject();
const { outputPath } = getESBuildExecutorOptions(project);

const sourcePackageJsonPath = `${project.data.root}/package.json`;
const outputPackageJsonPath = `${outputPath}/package.json`;

const isPublishable = await stat(sourcePackageJsonPath)
.then(stats => stats.isFile())
.catch(() => false);

if (!isPublishable) {
/** @type {import('nx/src/utils/package-json').PackageJson} */
const newPackageJson = {
name: `@code-pushup/${project.name}`,
private: true,
type: 'module',
main: 'index.js',
types: 'src/index.d.ts',
};
await writeFile(
outputPackageJsonPath,
JSON.stringify(newPackageJson, null, 2),
);
return;
}

/** @type {import('nx/src/utils/package-json').PackageJson} */
const packageJson = JSON.parse(
await readFile(sourcePackageJsonPath, 'utf8'),
);

/** @type {import('nx/src/utils/package-json').PackageJson} */
const rootPackageJson = JSON.parse(
await readFile('package.json', 'utf8'),
);

packageJson.license = rootPackageJson.license;
if (project.name === 'cli') {
packageJson.homepage = rootPackageJson.homepage;
} else {
packageJson.homepage = `https://github.com/code-pushup/cli/tree/main/packages/${project.name}#readme`;
}
packageJson.bugs = rootPackageJson.bugs;
packageJson.repository = {
...rootPackageJson.repository,
directory: project.data.root,
};
packageJson.contributors = rootPackageJson.contributors;
packageJson.publishConfig = { access: 'public' };
packageJson.type = 'module';
packageJson.main = './index.js';
packageJson.types = './src/index.d.ts';

await writeFile(
outputPackageJsonPath,
JSON.stringify(packageJson, null, 2),
);
});
},
},
],
};
25 changes: 25 additions & 0 deletions packages/ci/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,31 @@
"name": "@code-pushup/ci",
"version": "0.52.0",
"description": "CI automation logic for Code PushUp (provider-agnostic)",
"license": "MIT",
"homepage": "https://github.com/code-pushup/cli/tree/main/packages/ci#readme",
"bugs": {
"url": "https://github.com/code-pushup/cli/issues?q=is%3Aissue%20state%3Aopen%20type%3ABug"
},
"repository": {
"type": "git",
"url": "git+https://github.com/code-pushup/cli.git",
"directory": "packages/ci"
},
"keywords": [
"Code PushUp",
"CI integration",
"automation",
"KPI tracking",
"tech debt",
"automated feedback",
"regression guard"
],
"publishConfig": {
"access": "public"
},
"type": "module",
"main": "./index.js",
"types": "./src/index.d.ts",
"dependencies": {
"@code-pushup/models": "0.52.0",
"@code-pushup/utils": "0.52.0",
Expand Down
37 changes: 37 additions & 0 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,43 @@
"version": "0.52.0",
"license": "MIT",
"description": "A CLI to run all kinds of code quality measurements to align your team with company goals",
"homepage": "https://code-pushup.dev",
"bugs": {
"url": "https://github.com/code-pushup/cli/issues?q=is%3Aissue%20state%3Aopen%20type%3ABug"
},
"repository": {
"type": "git",
"url": "git+https://github.com/code-pushup/cli.git",
"directory": "packages/cli"
},
"keywords": [
"CLI",
"Code PushUp",
"automation",
"developer tools",
"code quality",
"conformance",
"build tools",
"KPI tracking",
"tech debt",
"automated feedback",
"regression guard",
"CI integration",
"code management",
"actionable feedback",
"trend analysis",
"static analysis",
"linting",
"audit",
"performance",
"score monitoring"
],
"publishConfig": {
"access": "public"
},
"type": "module",
"main": "./index.js",
"types": "./src/index.d.ts",
"bin": {
"code-pushup": "index.js"
},
Expand Down
37 changes: 37 additions & 0 deletions packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,43 @@
"version": "0.52.0",
"license": "MIT",
"description": "Core business logic for the used by the Code PushUp CLI",
"homepage": "https://github.com/code-pushup/cli/tree/main/packages/core#readme",
"bugs": {
"url": "https://github.com/code-pushup/cli/issues?q=is%3Aissue%20state%3Aopen%20type%3ABug"
},
"repository": {
"type": "git",
"url": "git+https://github.com/code-pushup/cli.git",
"directory": "packages/core"
},
"keywords": [
"CLI",
"Code PushUp",
"automation",
"developer tools",
"code quality",
"conformance",
"build tools",
"KPI tracking",
"tech debt",
"automated feedback",
"regression guard",
"CI integration",
"code management",
"actionable feedback",
"trend analysis",
"static analysis",
"linting",
"audit",
"performance",
"score monitoring"
],
"publishConfig": {
"access": "public"
},
"type": "module",
"main": "./index.js",
"types": "./src/index.d.ts",
"dependencies": {
"@code-pushup/models": "0.52.0",
"@code-pushup/utils": "0.52.0",
Expand Down
24 changes: 24 additions & 0 deletions packages/create-cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,30 @@
"version": "0.52.0",
"license": "MIT",
"bin": "index.js",
"homepage": "https://github.com/code-pushup/cli/tree/main/packages/create-cli#readme",
"bugs": {
"url": "https://github.com/code-pushup/cli/issues?q=is%3Aissue%20state%3Aopen%20type%3ABug"
},
"repository": {
"type": "git",
"url": "git+https://github.com/code-pushup/cli.git",
"directory": "packages/create-cli"
},
"keywords": [
"CLI",
"Code PushUp",
"automation",
"developer tools",
"code quality",
"conformance",
"build tools"
],
"publishConfig": {
"access": "public"
},
"type": "module",
"main": "./index.js",
"types": "./src/index.d.ts",
"dependencies": {
"@code-pushup/nx-plugin": "0.52.0",
"@code-pushup/utils": "0.52.0"
Expand Down
25 changes: 25 additions & 0 deletions packages/models/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,31 @@
"version": "0.52.0",
"license": "MIT",
"description": "Model definitions and validators for the Code PushUp CLI",
"homepage": "https://github.com/code-pushup/cli/tree/main/packages/models#readme",
"bugs": {
"url": "https://github.com/code-pushup/cli/issues?q=is%3Aissue%20state%3Aopen%20type%3ABug"
},
"repository": {
"type": "git",
"url": "git+https://github.com/code-pushup/cli.git",
"directory": "packages/models"
},
"keywords": [
"CLI",
"Code PushUp",
"developer tools",
"code quality",
"conformance",
"type definition",
"validators",
"models"
],
"publishConfig": {
"access": "public"
},
"type": "module",
"main": "./index.js",
"types": "./src/index.d.ts",
"dependencies": {
"zod": "^3.22.1",
"vscode-material-icons": "^0.1.0"
Expand Down
27 changes: 19 additions & 8 deletions packages/nx-plugin/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,37 @@
"publishConfig": {
"access": "public"
},
"homepage": "code-pushup.dev",
"homepage": "https://code-pushup.dev",
"bugs": {
"url": "https://github.com/code-pushup/cli/issues"
"url": "https://github.com/code-pushup/cli/issues?q=is%3Aissue%20state%3Aopen%20type%3ABug%20label%3A\"🧩%20nx-plugin\""
},
"repository": {
"type": "git",
"url": "git+https://github.com/code-pushup/cli.git",
"directory": "packages/nx-plugin"
},
"keywords": [
"CLI",
"Code PushUp",
"Nx",
"plugin",
"automation",
"developer tools",
"code quality",
"conformance",
"build tools"
],
"type": "commonjs",
"main": "./src/index.js",
"typings": "./src/index.d.ts",
"generators": "./generators.json",
"executors": "./executors.json",
"dependencies": {
"@nx/devkit": "^17.1.3",
"tslib": "2.6.3",
"nx": "^17.1.3",
"@code-pushup/models": "0.52.0",
"zod": "^3.22.4",
"@code-pushup/utils": "0.52.0"
},
"type": "commonjs",
"main": "./src/index.js",
"typings": "./src/index.d.ts",
"generators": "./generators.json",
"executors": "./executors.json"
}
}
33 changes: 33 additions & 0 deletions packages/plugin-coverage/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,39 @@
"name": "@code-pushup/coverage-plugin",
"version": "0.52.0",
"description": "Code PushUp plugin for tracking code coverage ☂",
"license": "MIT",
"homepage": "https://github.com/code-pushup/cli/tree/main/packages/plugin-coverage#readme",
"bugs": {
"url": "https://github.com/code-pushup/cli/issues?q=is%3Aissue%20state%3Aopen%20type%3ABug"
},
"repository": {
"type": "git",
"url": "git+https://github.com/code-pushup/cli.git",
"directory": "packages/plugin-coverage"
},
"keywords": [
"CLI",
"Code PushUp",
"plugin",
"automation",
"developer tools",
"conformance",
"code coverage",
"unit tests",
"testing",
"KPI tracking",
"automated feedback",
"regression guard",
"actionable feedback",
"audit",
"score monitoring"
],
"publishConfig": {
"access": "public"
},
"type": "module",
"main": "./index.js",
"types": "./src/index.d.ts",
"dependencies": {
"@code-pushup/models": "0.52.0",
"@code-pushup/utils": "0.52.0",
Expand Down
36 changes: 36 additions & 0 deletions packages/plugin-eslint/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,42 @@
"version": "0.52.0",
"license": "MIT",
"description": "Code PushUp plugin for detecting problems in source code using ESLint.📋",
"homepage": "https://github.com/code-pushup/cli/tree/main/packages/plugin-eslint#readme",
"bugs": {
"url": "https://github.com/code-pushup/cli/issues?q=is%3Aissue%20state%3Aopen%20type%3ABug%20label%3A\"🧩%20eslint-plugin\""
},
"repository": {
"type": "git",
"url": "git+https://github.com/code-pushup/cli.git",
"directory": "packages/plugin-eslint"
},
"keywords": [
"CLI",
"Code PushUp",
"ESLint",
"JavaScript",
"TypeScript",
"plugin",
"static analysis",
"linting",
"audit",
"performance",
"score monitoring",
"code quality",
"conformance",
"KPI tracking",
"tech debt",
"automated feedback",
"regression guard",
"actionable feedback",
"trend analysis"
],
"publishConfig": {
"access": "public"
},
"type": "module",
"main": "./index.js",
"types": "./src/index.d.ts",
"dependencies": {
"@code-pushup/utils": "0.52.0",
"@code-pushup/models": "0.52.0",
Expand Down
Loading

0 comments on commit 80c8007

Please sign in to comment.