Skip to content

Commit

Permalink
refactor: remove unused dependency (#10388)
Browse files Browse the repository at this point in the history
* refactor: remove unused dependency

* refactor: remove unused dependency

* refactor: merge and resolve conflict
  • Loading branch information
swatDong authored Nov 29, 2023
1 parent 53389c2 commit c13058b
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 492 deletions.
1 change: 0 additions & 1 deletion packages/fx-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@
"@microsoft/dev-tunnels-contracts": "~1.0.7445",
"@microsoft/dev-tunnels-management": "~1.0.7445",
"@microsoft/teamsfx-api": "workspace:*",
"@npmcli/arborist": "^4.2.0",
"adm-zip": "^0.5.10",
"ajv": "^8.5.0",
"axios": "^1.6.2",
Expand Down
30 changes: 0 additions & 30 deletions packages/fx-core/src/common/local/packageJsonHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import { LogProvider } from "@microsoft/teamsfx-api";
import * as fs from "fs-extra";
import * as path from "path";

const Arborist = require("@npmcli/arborist");
const npmRunDevRegex = /npm[\s]+run[\s]+dev/im;

export async function loadPackageJson(path: string, logger?: LogProvider): Promise<any> {
Expand Down Expand Up @@ -34,32 +33,3 @@ export async function loadTeamsFxDevScript(componentRoot: string): Promise<strin
return undefined;
}
}

export async function checkNpmDependencies(folder: string): Promise<boolean> {
if (await fs.pathExists(folder)) {
const packageJson = await loadPackageJson(path.join(folder, "package.json"));
if (
(packageJson?.dependencies && Object.keys(packageJson?.dependencies).length > 0) ||
(packageJson?.devDependencies && Object.keys(packageJson?.devDependencies).length > 0)
) {
// load deps from node_modules
const arb = new Arborist({ path: folder });
try {
await arb.loadActual();
} catch (error: any) {
return false;
}

// check if any missing dependency
const dependencies =
arb.actualTree?.edgesOut === undefined ? [] : [...arb.actualTree.edgesOut.values()];
return !dependencies.some((dependency) => dependency.error === "MISSING");
} else {
// treat no deps as npm installed
return true;
}
}

// treat missing folder as npm installed
return true;
}
133 changes: 1 addition & 132 deletions packages/fx-core/tests/common/local/packageJsonHelper.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,7 @@ import chaiAsPromised from "chai-as-promised";
import * as fs from "fs-extra";
import * as path from "path";

import {
checkNpmDependencies,
loadPackageJson,
loadTeamsFxDevScript,
} from "../../../src/common/local/packageJsonHelper";
import { loadPackageJson, loadTeamsFxDevScript } from "../../../src/common/local/packageJsonHelper";

chai.use(chaiAsPromised);

Expand Down Expand Up @@ -155,131 +151,4 @@ describe("packageJsonHelper", () => {
chai.assert.equal(devScript, "npx func start --X");
});
});

describe("checkNpmDependencies", () => {
beforeEach(() => {
fs.ensureDirSync(testFolder);
fs.emptyDirSync(testFolder);
});

it("npm installed", async () => {
const packageJson = `\
{\n\
"name": "test",\n\
"version": "1.0.0",\n\
"scripts": {\n\
"build": "tsc --build"\n\
},\n\
"dependencies": {\n\
"my-package": "1.0.0"\n\
}\n\
}`;
const packageLockJson = "package-lock.json place holder";
await fs.writeFile(path.join(testFolder, "package.json"), packageJson);
await fs.writeFile(path.join(testFolder, "package-lock.json"), packageLockJson);
await fs.ensureDir(path.join(testFolder, "node_modules", "my-package"));

const npmInstalled = await checkNpmDependencies(testFolder);
chai.assert.isTrue(npmInstalled);
});

it("yarn installed", async () => {
const packageJson = `\
{\n\
"name": "test",\n\
"version": "1.0.0",\n\
"scripts": {\n\
"build": "tsc --build"\n\
},\n\
"dependencies": {\n\
"my-package": "1.0.0"\n\
}\n\
}`;
const yarnLockJson = "yarn.lock place holder";
await fs.writeFile(path.join(testFolder, "package.json"), packageJson);
await fs.writeFile(path.join(testFolder, "yarn.lock"), yarnLockJson);
await fs.ensureDir(path.join(testFolder, "node_modules", "my-package"));

const npmInstalled = await checkNpmDependencies(testFolder);
chai.assert.isTrue(npmInstalled);
});

it("installing", async () => {
const packageJson = `\
{\n\
"name": "test",\n\
"version": "1.0.0",\n\
"scripts": {\n\
"build": "tsc --build"\n\
},\n\
"dependencies": {\n\
"my-package1": "1.0.0",\n\
"my-package2": "1.0.0"\n\
}\n\
}`;
await fs.writeFile(path.join(testFolder, "package.json"), packageJson);
await fs.ensureDir(path.join(testFolder, "node_modules", "my-package1"));

const npmInstalled = await checkNpmDependencies(testFolder);
chai.assert.isFalse(npmInstalled);
});

it("has dependencies but no node_modules", async () => {
const packageJson = `\
{\n\
"name": "test",\n\
"version": "1.0.0",\n\
"scripts": {\n\
"build": "tsc --build"\n\
},\n\
"dependencies": {\n\
"my-package": "1.0.0"\n\
}\n\
}`;
const packageLockJson = "package-lock.json place holder";
await fs.writeFile(path.join(testFolder, "package.json"), packageJson);
await fs.writeFile(path.join(testFolder, "package-lock.json"), packageLockJson);

const npmInstalled = await checkNpmDependencies(testFolder);
chai.assert.isFalse(npmInstalled);
});

it("has dependencies but no package installed", async () => {
const packageJson = `\
{\n\
"name": "test",\n\
"version": "1.0.0",\n\
"scripts": {\n\
"build": "tsc --build"\n\
},\n\
"dependencies": {\n\
"my-package": "1.0.0"\n\
}\n\
}`;
const packageLockJson = "package-lock.json place holder";
await fs.writeFile(path.join(testFolder, "package.json"), packageJson);
await fs.writeFile(path.join(testFolder, "package-lock.json"), packageLockJson);
await fs.ensureDir(path.join(testFolder, "node_modules", ".staging"));

const npmInstalled = await checkNpmDependencies(testFolder);
chai.assert.isFalse(npmInstalled);
});

it("no dependencies npm installed", async () => {
const packageJson = `\
{\n\
"name": "test",\n\
"version": "1.0.0",\n\
"scripts": {\n\
"build": "tsc --build"\n\
},\n\
"dependencies": {\n\
}\n\
}`;
await fs.writeFile(path.join(testFolder, "package.json"), packageJson);

const npmInstalled = await checkNpmDependencies(testFolder);
chai.assert.isTrue(npmInstalled);
});
});
});
Loading

0 comments on commit c13058b

Please sign in to comment.