我创建了一个包含多个选项的包,根据选择,我从节点运行带有 execFile 的 bash 脚本 .sh,它在本地使用路径“./utils/myScript.sh”可以正常工作
但是当我使用 npm pack 创建包并全局安装时,它在 utils 目录中找不到脚本文件。另一方面,如果我把路径 /usr/local/lib/node_modules/choicescript/utils/myScript.sh 它工作
如何告诉它使用相对路径而不是绝对路径
当脚本启动时我有另一个小问题我有我的日志,但我没有看到显示的脚本返回,就好像我直接使用 ./myScript.sh 启动了这个脚本一样
const program = require("commander");
const chalk = require("chalk");
const inquirer = require("inquirer");
const { execFile } = require("child_process");
let opts = {
shell: "/bin/bash",
};
function devFunc() {
execFile("./utils/myScrypt.sh", opts, (error, stdout, stderr) => {
log(stdout);
log(stderr);
if (error !== null) {
log(`exec error: ${error}`);
}
});
log(chalk.green.bold("\033[32;5mDATABASE DEV RUN - host: 127.0.0.1 - port: 3306\033[0m - ") + chalk.blue.bold(`CTRL+C pour quitter`));
}
const { dev, preprod, prod } = program.opts();
if (dev) {
devFunc();
} else if (preprod) {
preprodFunc();
} else if (prod) {
prodFunc();
} else {
inquirer
.prompt([
{
type: "rawlist",
name: "Database_gcp",
message: "Database choice",
choices: ["dev", "preprod", "prod", "exit"],
},
])
.then((gcp) => {
if (gcp.Database_gcp === "dev") {
devFunc();
}
if (gcp.Database_gcp === "preprod") {
preprodFunc();
}
if (gcp.Database_gcp === "prod") {
prodFunc();
}
if (gcp.Database_gcp === "exit") {
log(chalk.blue("EXIT"));
}
});
}