Skip to content

Commit 69e8381

Browse files
author
Dimitar Kerezov
committed
Conform ios inspector code with npm 5
1 parent 67fdb67 commit 69e8381

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

lib/constants.ts

+1
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,4 @@ export const TYPESCRIPT_NAME = "typescript";
7171
export const BUILD_OUTPUT_EVENT_NAME = "buildOutput";
7272
export const CONNECTION_ERROR_EVENT_NAME = "connectionError";
7373
export const VERSION_STRING = "version";
74+
export const INSPECTOR_CACHE_DIRNAME = "ios-inspector";

lib/npm-installation-manager.ts

+23-10
Original file line numberDiff line numberDiff line change
@@ -47,27 +47,40 @@ export class NpmInstallationManager implements INpmInstallationManager {
4747
}
4848

4949
public async getInspectorFromCache(inspectorNpmPackageName: string, projectDir: string): Promise<string> {
50-
let inspectorPath = path.join(projectDir, "node_modules", inspectorNpmPackageName);
50+
let inspectorPath = path.join(projectDir, constants.NODE_MODULES_FOLDER_NAME, inspectorNpmPackageName);
5151

5252
// local installation takes precedence over cache
5353
if (!this.inspectorAlreadyInstalled(inspectorPath)) {
54-
let cachepath = (await this.$childProcess.exec("npm get cache")).trim();
55-
let version = await this.getLatestCompatibleVersion(inspectorNpmPackageName);
56-
let pathToPackageInCache = path.join(cachepath, inspectorNpmPackageName, version);
57-
let pathToUnzippedInspector = path.join(pathToPackageInCache, "package");
54+
const cachePath = path.join(this.$options.profileDir, constants.INSPECTOR_CACHE_DIRNAME);
55+
this.prepareCacheDir(cachePath);
56+
const pathToPackageInCache = path.join(cachePath, constants.NODE_MODULES_FOLDER_NAME, inspectorNpmPackageName);
5857

5958
if (!this.$fs.exists(pathToPackageInCache)) {
60-
await this.$childProcess.exec(`npm cache add ${inspectorNpmPackageName}@${version}`);
61-
let inspectorTgzPathInCache = path.join(pathToPackageInCache, "package.tgz");
62-
await this.$childProcess.exec(`tar -xf ${inspectorTgzPathInCache} -C ${pathToPackageInCache}`);
63-
await this.$childProcess.exec(`npm install --prefix ${pathToUnzippedInspector}`);
59+
const version = await this.getLatestCompatibleVersion(inspectorNpmPackageName);
60+
await this.$childProcess.exec(`npm install ${inspectorNpmPackageName}@${version} --prefix ${cachePath}`);
6461
}
62+
6563
this.$logger.out("Using inspector from cache.");
66-
return pathToUnzippedInspector;
64+
return pathToPackageInCache;
6765
}
66+
6867
return inspectorPath;
6968
}
7069

70+
private prepareCacheDir(cacheDirName: string): void {
71+
if (!this.$fs.exists(cacheDirName)) {
72+
this.$fs.createDirectory(cacheDirName);
73+
}
74+
75+
const cacheDirPackageJsonLocation = path.join(cacheDirName, constants.PACKAGE_JSON_FILE_NAME);
76+
if (!this.$fs.exists(cacheDirPackageJsonLocation)) {
77+
this.$fs.writeJson(cacheDirPackageJsonLocation, {
78+
name: constants.INSPECTOR_CACHE_DIRNAME,
79+
version: "0.1.0"
80+
});
81+
}
82+
}
83+
7184
private inspectorAlreadyInstalled(pathToInspector: string): Boolean {
7285
if (this.$fs.exists(pathToInspector)) {
7386
return true;

0 commit comments

Comments
 (0)