@nx-extend/vercel 16.0.0 → 16.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,14 @@
1
1
 
2
+ # [16.1.0](https://github.com/tripss/nx-extend/compare/vercel@16.0.0...vercel@16.1.0) (2026-02-08)
3
+
4
+
5
+ ### Features
6
+
7
+ * **vercel:** Refactor repo.json creation logic into utility function ([3902ccf](https://github.com/tripss/nx-extend/commit/3902ccf45fb26f94f74c846d2a35e40cf321eb0e))
8
+ * **vercel:** Refactor Vercel directory handling and repo.json creation logic ([c8d0081](https://github.com/tripss/nx-extend/commit/c8d0081d1487bf555f1be65578ddc2eff18c4387))
9
+
10
+
11
+
2
12
  # [16.0.0](https://github.com/tripss/nx-extend/compare/vercel@15.0.0...vercel@16.0.0) (2026-02-07)
3
13
 
4
14
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx-extend/vercel",
3
- "version": "16.0.0",
3
+ "version": "16.1.0",
4
4
  "keywords": [
5
5
  "nx",
6
6
  "vercel"
@@ -4,12 +4,12 @@ exports.buildExecutor = buildExecutor;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const parse_target_string_1 = require("@nx/devkit/src/executors/parse-target-string");
6
6
  const core_1 = require("@nx-extend/core");
7
- const fs_1 = require("fs");
8
7
  const path_1 = require("path");
9
8
  const add_env_variables_to_file_1 = require("../../utils/add-env-variables-to-file");
10
9
  const constants_1 = require("../../utils/constants");
11
10
  const enrich_vercel_env_file_1 = require("../../utils/enrich-vercel-env-file");
12
11
  const get_env_vars_1 = require("../../utils/get-env-vars");
12
+ const create_repo_json_1 = require("./utils/create-repo-json");
13
13
  const get_output_directory_1 = require("./utils/get-output-directory");
14
14
  function buildExecutor(options, context) {
15
15
  const framework = options.framework || 'nextjs';
@@ -31,27 +31,11 @@ function buildExecutor(options, context) {
31
31
  if (!outputDirectory) {
32
32
  throw new Error(`"${buildTarget}" target has no "outputPath" configured!`);
33
33
  }
34
- const vercelDirectory = '.vercel';
35
- const vercelDirectoryLocation = (0, path_1.join)(context.root, vercelDirectory);
36
- if ((0, fs_1.existsSync)(vercelDirectoryLocation)) {
37
- (0, fs_1.rmSync)(vercelDirectoryLocation, {
38
- recursive: true
39
- });
40
- }
41
34
  const { root: projectRoot } = context.projectsConfigurations.projects[context.projectName];
42
35
  // Create repo.json, used for deployments to Vercel
43
- (0, devkit_1.writeJsonFile)(`./${vercelDirectory}/repo.json`, {
44
- orgId: options.orgId,
45
- remoteName: 'origin',
46
- projects: [
47
- {
48
- id: options.projectId,
49
- name: context.projectName,
50
- directory: projectRoot
51
- }
52
- ]
53
- });
36
+ (0, create_repo_json_1.createRepoJson)(options.orgId, options.projectId, context.projectName, projectRoot);
54
37
  // First, make sure the .vercel/project.json exists
38
+ const vercelDirectory = '.vercel';
55
39
  const vercelProjectJson = `${projectRoot}/${vercelDirectory}/project.json`;
56
40
  (0, devkit_1.writeJsonFile)(vercelProjectJson, {
57
41
  projectId: options.projectId,
@@ -1 +1 @@
1
- {"version":3,"file":"build.impl.js","sourceRoot":"","sources":["../../../../../../packages/vercel/src/executors/build/build.impl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.impl.js","sourceRoot":"","sources":["../../../../../../packages/vercel/src/executors/build/build.impl.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@ import { addEnvVariablesToFile } from '../../utils/add-env-variables-to-file'
16
16
  import { VERCEL_COMMAND, VERCEL_TOKEN } from '../../utils/constants'
17
17
  import { enrichVercelEnvFile } from '../../utils/enrich-vercel-env-file'
18
18
  import { getEnvVars } from '../../utils/get-env-vars'
19
+ import { createRepoJson } from './utils/create-repo-json'
19
20
  import { getOutputDirectory } from './utils/get-output-directory'
20
21
 
21
22
  export interface BuildOptions {
@@ -60,31 +61,13 @@ export function buildExecutor(
60
61
  throw new Error(`"${buildTarget}" target has no "outputPath" configured!`)
61
62
  }
62
63
 
63
- const vercelDirectory = '.vercel'
64
- const vercelDirectoryLocation = join(context.root, vercelDirectory)
65
-
66
- if (existsSync(vercelDirectoryLocation)) {
67
- rmSync(vercelDirectoryLocation, {
68
- recursive: true
69
- })
70
- }
71
-
72
64
  const { root: projectRoot } = context.projectsConfigurations.projects[context.projectName]
73
65
 
74
66
  // Create repo.json, used for deployments to Vercel
75
- writeJsonFile(`./${vercelDirectory}/repo.json`, {
76
- orgId: options.orgId,
77
- remoteName: 'origin',
78
- projects: [
79
- {
80
- id: options.projectId,
81
- name: context.projectName,
82
- directory: projectRoot
83
- }
84
- ]
85
- })
67
+ createRepoJson(options.orgId, options.projectId, context.projectName, projectRoot)
86
68
 
87
69
  // First, make sure the .vercel/project.json exists
70
+ const vercelDirectory = '.vercel'
88
71
  const vercelProjectJson = `${projectRoot}/${vercelDirectory}/project.json`
89
72
  writeJsonFile(vercelProjectJson, {
90
73
  projectId: options.projectId,
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Creates a repo.json file if it doesn't exist yet'
3
+ */
4
+ export declare function createRepoJson(orgId: string, projectId: string, projectName: string, projectRoot: string): void;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRepoJson = createRepoJson;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const node_fs_1 = require("node:fs");
6
+ /**
7
+ * Creates a repo.json file if it doesn't exist yet'
8
+ */
9
+ function createRepoJson(orgId, projectId, projectName, projectRoot) {
10
+ const repoJsonLocation = `.vercel/repo.json`;
11
+ let repoJson;
12
+ if (!(0, node_fs_1.existsSync)(repoJsonLocation)) {
13
+ repoJson = {
14
+ orgId,
15
+ remoteName: 'origin',
16
+ projects: []
17
+ };
18
+ }
19
+ else {
20
+ repoJson = (0, devkit_1.readJsonFile)(repoJsonLocation);
21
+ }
22
+ if (!repoJson.projects.some((project) => project.id === projectId)) {
23
+ repoJson.projects.push({
24
+ id: projectId,
25
+ name: projectName,
26
+ directory: projectRoot
27
+ });
28
+ (0, devkit_1.writeJsonFile)(repoJsonLocation, repoJson);
29
+ }
30
+ }
31
+ //# sourceMappingURL=create-repo-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-repo-json.js","sourceRoot":"","sources":["../../../../../../../packages/vercel/src/executors/build/utils/create-repo-json.ts"],"names":[],"mappings":";;AAMA,wCA4BC;AAlCD,uCAAwD;AACxD,qCAAoC;AAEpC;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAa,EAAE,SAAiB,EAAE,WAAmB,EAAE,WAAmB;IACvG,MAAM,gBAAgB,GAAG,mBAAmB,CAAA;IAE5C,IAAI,QAIH,CAAA;IAED,IAAI,CAAC,IAAA,oBAAU,EAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,QAAQ,GAAG;YACT,KAAK;YACL,UAAU,EAAE,QAAQ;YACpB,QAAQ,EAAE,EAAE;SACb,CAAA;IACH,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,IAAA,qBAAY,EAAC,gBAAgB,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;QACnE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,WAAW;SACvB,CAAC,CAAA;QAEF,IAAA,sBAAa,EAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA;IAC3C,CAAC;AACH,CAAC"}