liferay-npm-bundler-preset-reactjs
Version:
liferay npm bundler preset react
53 lines (42 loc) • 1.13 kB
text/typescript
/**
* SPDX-FileCopyrightText: © 2020 Liferay, Inc. <https://liferay.com>
* SPDX-License-Identifier: LGPL-3.0-or-later
*/
import {Project} from '.';
export enum ProjectType {
CREATE_REACT_APP = 'create-react-app',
ANGULAR_CLI = 'angular-cli',
VUE_CLI = 'vue-cli',
}
/**
* Reflects project type (React, Angular, ...)
*/
export default class Probe {
constructor(project) {
this._project = project;
}
/**
* Return true if project is of type create-react-app
* @return the project type or undefined if nothing detected
*/
get type(): ProjectType | undefined {
if (this._hasDependency('react-scripts')) {
return ProjectType.CREATE_REACT_APP;
}
if (this._hasDependency('@angular/cli')) {
return ProjectType.ANGULAR_CLI;
}
if (this._hasDependency('@vue/cli-service')) {
return ProjectType.VUE_CLI;
}
return undefined;
}
_hasDependency(pkgName) {
const {pkgJson} = this._project;
return (
(pkgJson['dependencies'] && pkgJson['dependencies'][pkgName]) ||
(pkgJson['devDependencies'] && pkgJson['devDependencies'][pkgName])
);
}
private readonly _project: Project;
}