mirror of
https://github.com/Zagrios/bs-manager.git
synced 2026-07-03 14:08:25 +02:00
39 lines
2.0 KiB
JavaScript
39 lines
2.0 KiB
JavaScript
import fs from "fs";
|
|
import chalk from "chalk";
|
|
import { execSync } from "child_process";
|
|
import { dependencies } from "../../package.json";
|
|
|
|
if (dependencies) {
|
|
const dependenciesKeys = Object.keys(dependencies);
|
|
const nativeDeps = fs.readdirSync("node_modules").filter(folder => fs.existsSync(`node_modules/${folder}/binding.gyp`));
|
|
if (nativeDeps.length === 0) {
|
|
process.exit(0);
|
|
}
|
|
try {
|
|
// Find the reason for why the dependency is installed. If it is installed
|
|
// because of a devDependency then that is okay. Warn when it is installed
|
|
// because of a dependency
|
|
const { dependencies: dependenciesObject } = JSON.parse(execSync(`npm ls ${nativeDeps.join(" ")} --json`).toString());
|
|
const rootDependencies = Object.keys(dependenciesObject);
|
|
const filteredRootDependencies = rootDependencies.filter(rootDependency => dependenciesKeys.includes(rootDependency));
|
|
if (filteredRootDependencies.length > 0) {
|
|
const plural = filteredRootDependencies.length > 1;
|
|
console.log(`
|
|
${chalk.whiteBright.bgYellow.bold("Webpack does not work with native dependencies.")}
|
|
${chalk.bold(filteredRootDependencies.join(", "))} ${plural ? "are native dependencies" : "is a native dependency"} and should be installed inside of the "./release/app" folder.
|
|
First, uninstall the packages from "./package.json":
|
|
${chalk.whiteBright.bgGreen.bold("npm uninstall your-package")}
|
|
${chalk.bold('Then, instead of installing the package to the root "./package.json":')}
|
|
${chalk.whiteBright.bgRed.bold("npm install your-package")}
|
|
${chalk.bold('Install the package to "./release/app/package.json"')}
|
|
${chalk.whiteBright.bgGreen.bold("cd ./release/app && npm install your-package")}
|
|
Read more about native dependencies at:
|
|
${chalk.bold("https://electron-react-boilerplate.js.org/docs/adding-dependencies/#module-structure")}
|
|
`);
|
|
process.exit(1);
|
|
}
|
|
} catch (e) {
|
|
console.log("Native dependencies could not be checked");
|
|
}
|
|
}
|