Files
n8n-nodes-gwezz-changdunovel/node_modules/@n8n/node-cli/dist/commands/dev/index.js
2025-10-26 23:10:15 +08:00

109 lines
5.4 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const prompts_1 = require("@clack/prompts");
const core_1 = require("@oclif/core");
const node_os_1 = __importDefault(require("node:os"));
const node_path_1 = __importDefault(require("node:path"));
const picocolors_1 = __importDefault(require("picocolors"));
const rimraf_1 = require("rimraf");
const filesystem_1 = require("../../utils/filesystem");
const package_manager_1 = require("../../utils/package-manager");
const prompts_2 = require("../../utils/prompts");
const validation_1 = require("../../utils/validation");
const build_1 = require("../build");
const utils_1 = require("./utils");
const child_process_1 = require("../../utils/child-process");
class Dev extends core_1.Command {
async run() {
const { flags } = await this.parse(Dev);
const packageManager = (await (0, package_manager_1.detectPackageManager)()) ?? 'npm';
const { runPersistentCommand } = (0, utils_1.commands)();
(0, prompts_1.intro)(picocolors_1.default.inverse(' n8n-node dev '));
await (0, prompts_2.ensureN8nPackage)('n8n-node dev');
await (0, build_1.copyStaticFiles)();
const linkingSpinner = (0, prompts_1.spinner)();
linkingSpinner.start('Linking custom node to n8n');
await (0, child_process_1.runCommand)(packageManager, ['link']);
const n8nUserFolder = flags['custom-user-folder'];
const customNodesFolder = node_path_1.default.join(n8nUserFolder, '.n8n', 'custom');
await (0, filesystem_1.ensureFolder)(customNodesFolder);
const packageName = await (0, utils_1.readPackageName)();
const invalidNodeNameError = (0, validation_1.validateNodeName)(packageName);
if (invalidNodeNameError)
return (0, prompts_2.onCancel)(invalidNodeNameError);
await (0, rimraf_1.rimraf)(node_path_1.default.join(customNodesFolder, 'package.json'));
await (0, child_process_1.runCommand)(packageManager, ['link', packageName], {
cwd: customNodesFolder,
});
linkingSpinner.stop('Linked custom node to n8n');
if (!flags['external-n8n']) {
let setupComplete = false;
const npxN8nSpinner = (0, prompts_1.spinner)();
npxN8nSpinner.start('Starting n8n dev server');
prompts_1.log.warn(picocolors_1.default.dim('First run may take a few minutes while dependencies are installed'));
try {
await Promise.race([
new Promise((resolve) => {
runPersistentCommand('npx', ['-y', '--quiet', '--prefer-online', 'n8n@latest'], {
cwd: n8nUserFolder,
env: {
...process.env,
N8N_DEV_RELOAD: 'true',
N8N_RUNNERS_ENABLED: 'true',
DB_SQLITE_POOL_SIZE: '10',
N8N_USER_FOLDER: n8nUserFolder,
},
name: 'n8n',
color: picocolors_1.default.green,
allowOutput: (line) => {
if (line.includes('Initializing n8n process')) {
resolve();
}
return setupComplete;
},
});
}),
new Promise((_, reject) => {
setTimeout(() => {
const error = new Error('n8n startup timeout after 120 seconds');
reject(error);
}, 120_000);
}),
]);
setupComplete = true;
npxN8nSpinner.stop('Started n8n dev server');
}
catch (error) {
npxN8nSpinner.stop('Failed to start n8n dev server');
(0, prompts_2.onCancel)(error instanceof Error ? error.message : 'Unknown error occurred', 1);
return;
}
}
(0, prompts_1.outro)('✓ Setup complete');
runPersistentCommand(packageManager, ['exec', '--', 'tsc', '--watch'], {
name: 'build',
color: picocolors_1.default.cyan,
});
}
}
Dev.description = 'Run n8n with the node and rebuild on changes for live preview';
Dev.examples = [
'<%= config.bin %> <%= command.id %>',
'<%= config.bin %> <%= command.id %> --external-n8n',
'<%= config.bin %> <%= command.id %> --custom-user-folder /Users/test',
];
Dev.flags = {
'external-n8n': core_1.Flags.boolean({
default: false,
description: 'By default n8n-node dev will run n8n in a sub process. Enable this option if you would like to run n8n elsewhere. Make sure to set N8N_DEV_RELOAD to true in that case.',
}),
'custom-user-folder': core_1.Flags.directory({
default: node_path_1.default.join(node_os_1.default.homedir(), '.n8n-node-cli'),
description: 'Folder to use to store user-specific n8n data. By default it will use ~/.n8n-node-cli. The node CLI will install your node here.',
}),
};
exports.default = Dev;
//# sourceMappingURL=index.js.map