mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
chore(hook): Add check for min webpack v1.3.0 (#7998)
This commit is contained in:
committed by
Svetoslav
parent
aacfce58ac
commit
7e87fe0018
@@ -1,13 +1,62 @@
|
|||||||
const semver = require("semver");
|
const semver = require("semver");
|
||||||
|
|
||||||
|
const webpackPackageName = "nativescript-dev-webpack";
|
||||||
|
|
||||||
module.exports = function ($staticConfig, hookArgs) {
|
module.exports = function ($staticConfig, hookArgs) {
|
||||||
const cliVersion = semver.parse($staticConfig.version);
|
const cliVersion = semver.parse($staticConfig.version);
|
||||||
const majorVersion = cliVersion && cliVersion.major;
|
|
||||||
const minorVersion = cliVersion && cliVersion.minor;
|
|
||||||
const platfrom = hookArgs.prepareData.platform;
|
const platfrom = hookArgs.prepareData.platform;
|
||||||
|
const projectData = hookArgs.projectData;
|
||||||
|
|
||||||
|
// Required CLI version for building IOS: 6.2.0
|
||||||
if (platfrom.toLowerCase() === "ios" &&
|
if (platfrom.toLowerCase() === "ios" &&
|
||||||
(majorVersion < 6 || (majorVersion === 6 && minorVersion < 2))) {
|
!satisfiesRequriredVersion(cliVersion, 6, 2)) {
|
||||||
throw new Error(`Building @nativescript/core for iOS requires NativeScript CLI with version at least 6.2.0. Please upgrade your NativeScript CLI version (npm i -g nativescript).`);
|
throw new Error(`Building @nativescript/core for iOS requires NativeScript CLI with version at least 6.2.0. Please upgrade your NativeScript CLI version (npm i -g nativescript).`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Required webpack version for angular projects: 1.3.0
|
||||||
|
if (projectData.projectType === "Angular") {
|
||||||
|
const webpackMinVer = getMinWebpackVersion(projectData);
|
||||||
|
|
||||||
|
if (webpackMinVer && !satisfiesRequriredVersion(webpackMinVer, 1, 3)) {
|
||||||
|
throw new Error(`Building @nativescript/core for Angular requires ${webpackPackageName} with version at least 1.3.0. Please upgrade: npm i ${webpackPackageName} --save-dev.`);
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if semver object satisifies a major/minor requirement. Pre-release versions are OK too!
|
||||||
|
*/
|
||||||
|
function satisfiesRequriredVersion(actualVersion, requiredMajor, requiredMinor) {
|
||||||
|
// Return true for null version to handle tags (ex. "next", "rc")
|
||||||
|
if (!actualVersion) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (actualVersion.major < requiredMajor) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (actualVersion.major === requiredMajor && actualVersion.minor < requiredMinor) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getMinWebpackVersion(projectData) {
|
||||||
|
const devDependencies = projectData.devDependencies || {};
|
||||||
|
const dependencies = projectData.dependencies || {};
|
||||||
|
const webpackVer = dependencies[webpackPackageName] || devDependencies[webpackPackageName];
|
||||||
|
|
||||||
|
let webpackMinVer = null;
|
||||||
|
|
||||||
|
if (semver.valid(webpackVer)) {
|
||||||
|
webpackMinVer = semver.parse(webpackVer);
|
||||||
|
} else if (semver.validRange(webpackVer)) {
|
||||||
|
webpackMinVer = semver.minVersion(webpackVer);
|
||||||
|
} else {
|
||||||
|
webpackMinVer = semver.coerce(webpackVer);
|
||||||
|
}
|
||||||
|
|
||||||
|
return webpackMinVer;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user