Add .gitignore to exclude all node packages and lock files
This commit is contained in:
+167
@@ -0,0 +1,167 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.addCommand = void 0;
|
||||
const renderer_1 = require("@remotion/renderer");
|
||||
const studio_server_1 = require("@remotion/studio-server");
|
||||
const node_child_process_1 = require("node:child_process");
|
||||
const node_fs_1 = __importDefault(require("node:fs"));
|
||||
const chalk_1 = require("./chalk");
|
||||
const extra_packages_1 = require("./extra-packages");
|
||||
const list_of_remotion_packages_1 = require("./list-of-remotion-packages");
|
||||
const log_1 = require("./log");
|
||||
const resolve_from_1 = require("./resolve-from");
|
||||
const getInstalledVersion = (remotionRoot, pkg) => {
|
||||
try {
|
||||
const pkgJsonPath = (0, resolve_from_1.resolveFrom)(remotionRoot, `${pkg}/package.json`);
|
||||
const file = node_fs_1.default.readFileSync(pkgJsonPath, 'utf-8');
|
||||
const packageJson = JSON.parse(file);
|
||||
return packageJson.version;
|
||||
}
|
||||
catch (_a) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
const addCommand = async ({ remotionRoot, packageManager, packageNames, logLevel, args, }) => {
|
||||
// Validate that all package names are Remotion packages
|
||||
const invalidPackages = packageNames.filter((pkg) => !list_of_remotion_packages_1.listOfRemotionPackages.includes(pkg) && !extra_packages_1.EXTRA_PACKAGES[pkg]);
|
||||
if (invalidPackages.length > 0) {
|
||||
throw new Error(`The following packages are not Remotion packages: ${invalidPackages.join(', ')}. Must be one of the Remotion packages or one of the supported extra packages: ${Object.keys(extra_packages_1.EXTRA_PACKAGES).join(', ')}.`);
|
||||
}
|
||||
const { dependencies, devDependencies, optionalDependencies, peerDependencies, } = studio_server_1.StudioServerInternals.getInstalledDependencies(remotionRoot);
|
||||
// Check if packages are already installed
|
||||
const allDeps = [
|
||||
...dependencies,
|
||||
...devDependencies,
|
||||
...optionalDependencies,
|
||||
...peerDependencies,
|
||||
];
|
||||
const alreadyInstalled = [];
|
||||
const toInstall = [];
|
||||
const toUpgrade = [];
|
||||
for (const pkg of packageNames) {
|
||||
const isInstalled = allDeps.includes(pkg);
|
||||
const requiredVersion = extra_packages_1.EXTRA_PACKAGES[pkg];
|
||||
if (!isInstalled) {
|
||||
toInstall.push(pkg);
|
||||
}
|
||||
else if (requiredVersion) {
|
||||
// For extra packages, check if the version is correct
|
||||
const installedVersion = getInstalledVersion(remotionRoot, pkg);
|
||||
if (installedVersion !== requiredVersion) {
|
||||
toUpgrade.push({
|
||||
pkg,
|
||||
from: installedVersion !== null && installedVersion !== void 0 ? installedVersion : 'unknown',
|
||||
to: requiredVersion,
|
||||
});
|
||||
toInstall.push(pkg);
|
||||
}
|
||||
else {
|
||||
alreadyInstalled.push(pkg);
|
||||
}
|
||||
}
|
||||
else {
|
||||
alreadyInstalled.push(pkg);
|
||||
}
|
||||
}
|
||||
// Log already installed packages
|
||||
for (const pkg of alreadyInstalled) {
|
||||
log_1.Log.info({ indent: false, logLevel }, `○ ${pkg} ${chalk_1.chalk.gray('(already installed)')}`);
|
||||
}
|
||||
// Log packages that will be upgraded
|
||||
for (const { pkg, from, to } of toUpgrade) {
|
||||
log_1.Log.info({ indent: false, logLevel }, `↑ ${pkg} ${chalk_1.chalk.yellow(`${from} → ${to}`)}`);
|
||||
}
|
||||
// If nothing to install, return early
|
||||
if (toInstall.length === 0) {
|
||||
return;
|
||||
}
|
||||
const installedRemotionPackages = list_of_remotion_packages_1.listOfRemotionPackages.filter((pkg) => allDeps.includes(pkg));
|
||||
// Get the version from the first installed Remotion package
|
||||
const packageJsonPath = `${remotionRoot}/node_modules/${installedRemotionPackages[0]}/package.json`;
|
||||
let targetVersion = null;
|
||||
if (installedRemotionPackages.length > 0) {
|
||||
try {
|
||||
const packageJson = require(packageJsonPath);
|
||||
targetVersion = packageJson.version;
|
||||
const packageList = toInstall.length === 1
|
||||
? toInstall[0]
|
||||
: `${toInstall.length} packages (${toInstall.join(', ')})`;
|
||||
log_1.Log.info({ indent: false, logLevel }, `Installing ${packageList}`);
|
||||
}
|
||||
catch (err) {
|
||||
throw new Error(`Could not determine version of installed Remotion packages: ${err.message}`);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// If no Remotion packages are installed, we can only install extra packages
|
||||
const notExtraPackages = toInstall.filter((pkg) => !extra_packages_1.EXTRA_PACKAGES[pkg]);
|
||||
if (notExtraPackages.length > 0) {
|
||||
throw new Error('No Remotion packages found in your project. Install Remotion first.');
|
||||
}
|
||||
}
|
||||
const manager = studio_server_1.StudioServerInternals.getPackageManager({
|
||||
remotionRoot,
|
||||
packageManager,
|
||||
dirUp: 0,
|
||||
logLevel,
|
||||
});
|
||||
if (manager === 'unknown') {
|
||||
throw new Error(`No lockfile was found in your project (one of ${studio_server_1.StudioServerInternals.lockFilePaths
|
||||
.map((p) => p.path)
|
||||
.join(', ')}). Install dependencies using your favorite manager!`);
|
||||
}
|
||||
const packagesWithVersions = toInstall.map((pkg) => {
|
||||
if (extra_packages_1.EXTRA_PACKAGES[pkg]) {
|
||||
return `${pkg}@${extra_packages_1.EXTRA_PACKAGES[pkg]}`;
|
||||
}
|
||||
return `${pkg}@${targetVersion}`;
|
||||
});
|
||||
const command = studio_server_1.StudioServerInternals.getInstallCommand({
|
||||
manager: manager.manager,
|
||||
packages: packagesWithVersions,
|
||||
version: '',
|
||||
additionalArgs: args,
|
||||
});
|
||||
log_1.Log.info({ indent: false, logLevel }, chalk_1.chalk.gray(`$ ${manager.manager} ${command.join(' ')}`));
|
||||
const task = (0, node_child_process_1.spawn)(manager.manager, command, {
|
||||
env: {
|
||||
...process.env,
|
||||
ADBLOCK: '1',
|
||||
DISABLE_OPENCOLLECTIVE: '1',
|
||||
npm_config_loglevel: 'error',
|
||||
},
|
||||
stdio: renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'info')
|
||||
? 'inherit'
|
||||
: 'ignore',
|
||||
});
|
||||
await new Promise((resolve) => {
|
||||
task.on('close', (code) => {
|
||||
if (code === 0) {
|
||||
resolve();
|
||||
}
|
||||
else if (renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'info')) {
|
||||
throw new Error(`Failed to install packages, see logs above`);
|
||||
}
|
||||
else {
|
||||
throw new Error(`Failed to install packages, run with --log=info to see logs`);
|
||||
}
|
||||
});
|
||||
});
|
||||
const upgradedPkgs = new Set(toUpgrade.map((u) => u.pkg));
|
||||
for (const pkg of toInstall) {
|
||||
if (upgradedPkgs.has(pkg)) {
|
||||
// Already logged as upgrade
|
||||
continue;
|
||||
}
|
||||
if (extra_packages_1.EXTRA_PACKAGES[pkg]) {
|
||||
log_1.Log.info({ indent: false, logLevel }, `+ ${pkg}@${extra_packages_1.EXTRA_PACKAGES[pkg]}`);
|
||||
}
|
||||
else {
|
||||
log_1.Log.info({ indent: false, logLevel }, `+ ${pkg}@${targetVersion}`);
|
||||
}
|
||||
}
|
||||
};
|
||||
exports.addCommand = addCommand;
|
||||
Reference in New Issue
Block a user