Add .gitignore to exclude all node packages and lock files
This commit is contained in:
+192
@@ -0,0 +1,192 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.versionsCommand = exports.validateVersionsBeforeCommand = exports.VERSIONS_COMMAND = void 0;
|
||||
const renderer_1 = require("@remotion/renderer");
|
||||
const node_fs_1 = __importDefault(require("node:fs"));
|
||||
const node_path_1 = __importDefault(require("node:path"));
|
||||
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 parse_command_line_1 = require("./parse-command-line");
|
||||
const resolve_from_1 = require("./resolve-from");
|
||||
const getVersion = async (remotionRoot, p) => {
|
||||
try {
|
||||
const remotionPkgJson = (0, resolve_from_1.resolveFrom)(remotionRoot, `${p}/package.json`);
|
||||
const file = await node_fs_1.default.promises.readFile(remotionPkgJson, 'utf-8');
|
||||
const packageJson = JSON.parse(file);
|
||||
return { version: packageJson.version, path: remotionPkgJson };
|
||||
}
|
||||
catch (_a) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
const groupBy = (vals) => {
|
||||
const groups = {};
|
||||
for (const [pkg, version] of vals) {
|
||||
if (!groups[version.version]) {
|
||||
groups[version.version] = [];
|
||||
}
|
||||
groups[version.version].push({
|
||||
pkg,
|
||||
versionAndPath: version,
|
||||
});
|
||||
}
|
||||
return groups;
|
||||
};
|
||||
const getAllVersions = async (remotionRoot) => {
|
||||
return (await Promise.all(list_of_remotion_packages_1.listOfRemotionPackages.map(async (p) => [p, await getVersion(remotionRoot, p)]))).filter(([, version]) => version);
|
||||
};
|
||||
const getExtraPackagesStatus = async (remotionRoot) => {
|
||||
const results = [];
|
||||
for (const [pkg, requiredVersion] of Object.entries(extra_packages_1.EXTRA_PACKAGES)) {
|
||||
const versionAndPath = await getVersion(remotionRoot, pkg);
|
||||
if (versionAndPath) {
|
||||
results.push({
|
||||
pkg,
|
||||
requiredVersion,
|
||||
installedVersion: versionAndPath.version,
|
||||
path: versionAndPath.path,
|
||||
isCorrect: versionAndPath.version === requiredVersion,
|
||||
});
|
||||
}
|
||||
else {
|
||||
results.push({
|
||||
pkg,
|
||||
requiredVersion,
|
||||
installedVersion: null,
|
||||
path: null,
|
||||
isCorrect: true, // Not installed is fine - only validate if installed
|
||||
});
|
||||
}
|
||||
}
|
||||
return results;
|
||||
};
|
||||
exports.VERSIONS_COMMAND = 'versions';
|
||||
const validateVersionsBeforeCommand = async (remotionRoot, logLevel) => {
|
||||
var _a;
|
||||
const versions = await getAllVersions(remotionRoot);
|
||||
const grouped = groupBy(versions);
|
||||
const installedVersions = Object.keys(grouped);
|
||||
const hasRemotionMismatch = installedVersions.length > 1 && installedVersions.length !== 0;
|
||||
// Check extra packages
|
||||
const extraPackagesStatus = await getExtraPackagesStatus(remotionRoot);
|
||||
const incorrectExtraPackages = extraPackagesStatus.filter((status) => !status.isCorrect);
|
||||
if (!hasRemotionMismatch && incorrectExtraPackages.length === 0) {
|
||||
return;
|
||||
}
|
||||
// Could be a global install of @remotion/cli.
|
||||
// If you render a bundle with a different version, it will give a warning accordingly.
|
||||
if (installedVersions.length === 0 && incorrectExtraPackages.length === 0) {
|
||||
return;
|
||||
}
|
||||
const logOptions = { indent: false, logLevel };
|
||||
log_1.Log.warn(logOptions, '-------------');
|
||||
log_1.Log.warn(logOptions, 'Version mismatch:');
|
||||
if (hasRemotionMismatch) {
|
||||
for (const version of installedVersions) {
|
||||
log_1.Log.warn(logOptions, `- On version: ${version}`);
|
||||
for (const pkg of (_a = grouped[version]) !== null && _a !== void 0 ? _a : []) {
|
||||
log_1.Log.warn(logOptions, ` - ${pkg.pkg} ${chalk_1.chalk.gray(node_path_1.default.relative(remotionRoot, pkg.versionAndPath.path))}`);
|
||||
}
|
||||
log_1.Log.info({ indent: false, logLevel });
|
||||
}
|
||||
}
|
||||
if (incorrectExtraPackages.length > 0) {
|
||||
log_1.Log.warn(logOptions, 'Extra packages with wrong versions:');
|
||||
for (const status of incorrectExtraPackages) {
|
||||
const docLink = extra_packages_1.EXTRA_PACKAGES_DOCS[status.pkg];
|
||||
log_1.Log.warn(logOptions, ` - ${status.pkg}: installed ${status.installedVersion}, required ${status.requiredVersion}`);
|
||||
if (docLink) {
|
||||
log_1.Log.warn(logOptions, ` See: ${docLink}`);
|
||||
}
|
||||
}
|
||||
log_1.Log.info({ indent: false, logLevel });
|
||||
}
|
||||
log_1.Log.warn(logOptions, 'You may experience breakages such as:');
|
||||
log_1.Log.warn(logOptions, '- React context and hooks not working');
|
||||
log_1.Log.warn(logOptions, '- Type errors and feature incompatibilities');
|
||||
log_1.Log.warn(logOptions, '- Failed renders and unclear errors');
|
||||
log_1.Log.warn(logOptions);
|
||||
log_1.Log.warn(logOptions, 'To resolve:');
|
||||
log_1.Log.warn(logOptions, '- Make sure your package.json has all Remotion packages pointing to the same version.');
|
||||
log_1.Log.warn(logOptions, '- Remove the `^` character in front of a version to pin a package.');
|
||||
for (const incorrectPkg of incorrectExtraPackages) {
|
||||
log_1.Log.warn(logOptions, `- For ${incorrectPkg.pkg}, install exact version ${incorrectPkg.requiredVersion} (run: npx remotion add ${incorrectPkg.pkg}).`);
|
||||
}
|
||||
if (!renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose')) {
|
||||
log_1.Log.warn(logOptions, '- Run `npx remotion versions --log=verbose` to see the path of the modules resolved.');
|
||||
}
|
||||
log_1.Log.warn(logOptions, '-------------');
|
||||
log_1.Log.info({ indent: false, logLevel });
|
||||
};
|
||||
exports.validateVersionsBeforeCommand = validateVersionsBeforeCommand;
|
||||
const versionsCommand = async (remotionRoot, logLevel) => {
|
||||
var _a;
|
||||
(0, parse_command_line_1.parseCommandLine)();
|
||||
const versions = await getAllVersions(remotionRoot);
|
||||
const grouped = groupBy(versions);
|
||||
const installedVersions = Object.keys(grouped);
|
||||
log_1.Log.info({ indent: false, logLevel }, `Node.JS = ${process.version}, OS = ${process.platform}`);
|
||||
log_1.Log.info({ indent: false, logLevel });
|
||||
for (const version of installedVersions) {
|
||||
log_1.Log.info({ indent: false, logLevel }, `On version: ${version}`);
|
||||
for (const pkg of (_a = grouped[version]) !== null && _a !== void 0 ? _a : []) {
|
||||
log_1.Log.info({ indent: false, logLevel }, `- ${pkg.pkg}`);
|
||||
log_1.Log.verbose({ indent: false, logLevel }, ` ${(0, resolve_from_1.resolveFrom)(remotionRoot, `${pkg.pkg}/package.json`)}`);
|
||||
}
|
||||
log_1.Log.info({ indent: false, logLevel });
|
||||
}
|
||||
// Check extra packages
|
||||
const extraPackagesStatus = await getExtraPackagesStatus(remotionRoot);
|
||||
const installedExtraPackages = extraPackagesStatus.filter((status) => status.installedVersion !== null);
|
||||
if (installedExtraPackages.length > 0) {
|
||||
log_1.Log.info({ indent: false, logLevel }, 'Extra packages:');
|
||||
for (const status of installedExtraPackages) {
|
||||
const versionStatus = status.isCorrect
|
||||
? chalk_1.chalk.green(`${status.installedVersion}`)
|
||||
: chalk_1.chalk.red(`${status.installedVersion} (required: ${status.requiredVersion})`);
|
||||
log_1.Log.info({ indent: false, logLevel }, `- ${status.pkg}@${versionStatus}`);
|
||||
if (status.path) {
|
||||
log_1.Log.verbose({ indent: false, logLevel }, ` ${status.path}`);
|
||||
}
|
||||
}
|
||||
log_1.Log.info({ indent: false, logLevel });
|
||||
}
|
||||
if (installedVersions.length === 0) {
|
||||
log_1.Log.info({ indent: false, logLevel }, 'No Remotion packages found.');
|
||||
log_1.Log.info({ indent: false, logLevel }, 'Maybe @remotion/cli is installed globally.');
|
||||
log_1.Log.info({ indent: false, logLevel }, 'If you try to render a video that was bundled with a different version, you will get a warning.');
|
||||
process.exit(1);
|
||||
}
|
||||
const incorrectExtraPackages = extraPackagesStatus.filter((status) => !status.isCorrect);
|
||||
if (installedVersions.length === 1 && incorrectExtraPackages.length === 0) {
|
||||
log_1.Log.info({ indent: false, logLevel }, `All packages have the correct version.`);
|
||||
}
|
||||
else {
|
||||
if (installedVersions.length !== 1) {
|
||||
log_1.Log.error({ indent: false, logLevel }, 'Version mismatch: Not all Remotion packages have the same version.');
|
||||
log_1.Log.info({ indent: false, logLevel }, '- Make sure your package.json has all Remotion packages pointing to the same version.');
|
||||
log_1.Log.info({ indent: false, logLevel }, '- Remove the `^` character in front of a version to pin a package.');
|
||||
}
|
||||
if (incorrectExtraPackages.length > 0) {
|
||||
log_1.Log.error({ indent: false, logLevel }, 'Extra packages have incorrect versions:');
|
||||
for (const status of incorrectExtraPackages) {
|
||||
const docLink = extra_packages_1.EXTRA_PACKAGES_DOCS[status.pkg];
|
||||
log_1.Log.info({ indent: false, logLevel }, `- ${status.pkg}: installed ${status.installedVersion}, required ${status.requiredVersion}`);
|
||||
if (docLink) {
|
||||
log_1.Log.info({ indent: false, logLevel }, ` See: ${docLink}`);
|
||||
}
|
||||
}
|
||||
log_1.Log.info({ indent: false, logLevel }, `To fix, run: npx remotion add ${incorrectExtraPackages.map((s) => s.pkg).join(' ')}`);
|
||||
}
|
||||
if (!renderer_1.RenderInternals.isEqualOrBelowLogLevel(logLevel, 'verbose')) {
|
||||
log_1.Log.info({ indent: false, logLevel }, '- Rerun this command with --log=verbose to see the path of the modules resolved.');
|
||||
}
|
||||
process.exit(1);
|
||||
}
|
||||
};
|
||||
exports.versionsCommand = versionsCommand;
|
||||
Reference in New Issue
Block a user