mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-15 11:01:21 +08:00
56 lines
2.0 KiB
JavaScript
56 lines
2.0 KiB
JavaScript
"use strict";
|
|
|
|
const hook = require("@nativescript/hook")(__dirname);
|
|
|
|
const { compareProjectFiles } = require("./helpers/projectFilesManager");
|
|
const { getProjectDir } = require("./helpers/projectHelpers");
|
|
const path = require("path");
|
|
const fs = require("fs");
|
|
|
|
const projectDir = getProjectDir();
|
|
|
|
// This method is introduced as in version 1.0.0 of @nativescript/webpack (compatible and required for NativeScript 6.0.0)
|
|
// we have changed a lot of hooks and old ones are incompatible. This should be automatically handled with preuninstall script of the old version.
|
|
// However, old versions of nativescript-dev-webpack do not have such logic, so remove them manually on postinstall of the current version.
|
|
// This logic can be removed later, once most of the projects are migrated to 1.0.0 of the package or later.
|
|
// These new versions have preuninstall script that will automatically handle this case.
|
|
function removeOldHooks() {
|
|
const oldHooks = [
|
|
"before-prepareJSApp",
|
|
"before-cleanApp",
|
|
"before-watch",
|
|
"after-watch",
|
|
"before-watchPatterns",
|
|
"before-shouldPrepare",
|
|
"after-prepare",
|
|
"before-preview-sync"
|
|
];
|
|
|
|
const hooksDir = path.join(projectDir, "hooks");
|
|
const pkgName = require("./package.json").name;
|
|
const filename = `${pkgName}.js`;
|
|
oldHooks.forEach(hookName => {
|
|
const hookPath = path.join(hooksDir, hookName, filename);
|
|
|
|
try {
|
|
if (fs.existsSync(hookPath)) {
|
|
fs.unlinkSync(hookPath);
|
|
}
|
|
} catch (err) {
|
|
console.warn(`${pkgName} postinstall task: unable to delete hook ${hookPath}. Error is: ${err}`);
|
|
}
|
|
});
|
|
}
|
|
|
|
if (projectDir) {
|
|
compareProjectFiles(projectDir);
|
|
removeOldHooks();
|
|
hook.postinstall();
|
|
const installer = require("./installer");
|
|
installer.install();
|
|
} else {
|
|
// We are installing dev dependencies for the @nativescript/webpack plugin.
|
|
console.log("Skipping postinstall artifacts! We assumed the @nativescript/webpack is installing devDependencies");
|
|
}
|
|
|