Node.js 为节点运行的节点项目创建引导脚本

Node.js 为节点运行的节点项目创建引导脚本,node.js,npm,package.json,Node.js,Npm,Package.json,我正在制作一个脚本来引导我的所有项目,这样项目创建就像运行“node bootstrap.js”一样简单,脚本初始化目录,创建基本项目文件夹结构,安装依赖项(例如:nodemon、dotenv、jest等)并在package.json内配置脚本,例如“nodemon-r dotenv/config index.js”用于使用dotenv预加载启动nodemon。启动脚本时,我创建文件夹结构,然后在每个文件夹中创建示例文件,最后执行脚本的以下部分: // Lets add the scripts

我正在制作一个脚本来引导我的所有项目,这样项目创建就像运行“node bootstrap.js”一样简单,脚本初始化目录,创建基本项目文件夹结构,安装依赖项(例如:nodemon、dotenv、jest等)并在package.json内配置脚本,例如“nodemon-r dotenv/config index.js”用于使用dotenv预加载启动nodemon。启动脚本时,我创建文件夹结构,然后在每个文件夹中创建示例文件,最后执行脚本的以下部分:

// Lets add the scripts inside package.json
addScriptsToPackageJson = () => {
    const packageJsonFilename = './package.json';
    let packageJson = JSON.parse(fs.readFileSync(packageJsonFilename, 'utf8'));

    packageJson.scripts['test'] = 'jest --coverage';
    packageJson.scripts['dev'] = 'nodemon -r dotenv/config index.js';
    fs.writeFile(packageJsonFilename, JSON.stringify(packageJson, null, 2), function writeJSON(err) {
        if (err) return console.log(err);
        console.log(JSON.stringify(packageJson));
        console.log('writing to ' + packageJsonFilename);
    });
}

// Promisify exec command
function execShellCommand(cmd) {
    const exec = require('child_process').exec;
    return new Promise((resolve, reject) => {
        exec(cmd, (error, stdout, stderr) => {
            if (error) {
                console.warn(error);
            }
            resolve(stdout? stdout : stderr);
        });
    });
}

// Initialize project and download base dependencies
execShellCommand('npm init -y')
    .then(response => execShellCommand('npm install --save-dev nodemon dotenv jest'))
    .then(response => execShellCommand('npm install express'))
    .then(addScriptsToPackageJson())
    .catch(error => {console.log("ALGO SALIO MAL")});
但是函数addScriptStopPackageJSON抛出以下错误:

internal/fs/utils.js:220
    throw err;
    ^

Error: ENOENT: no such file or directory, open './package.json'
    at Object.openSync (fs.js:440:3)
    at Object.readFileSync (fs.js:342:35)
    at addScriptsToPackageJson (F:\Repositories\node-project-bootstraper\prueba\bootstrap.js:94:37)
    at Object.<anonymous> (F:\Repositories\node-project-bootstraper\prueba\bootstrap.js:109:11)
    at Module._compile (internal/modules/cjs/loader.js:955:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
    at Module.load (internal/modules/cjs/loader.js:811:32)
    at Function.Module._load (internal/modules/cjs/loader.js:723:14)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)
    at internal/main/run_main_module.js:17:11 {
  errno: -4058,
  syscall: 'open',
  code: 'ENOENT',
  path: './package.json'
}
internal/fs/utils.js:220
犯错误;
^
错误:enoint:没有这样的文件或目录,请打开“./package.json”
在Object.openSync(fs.js:440:3)
在Object.readFileSync(fs.js:342:35)
在addScriptsToPackageJson(F:\Repositories\node project bootstraper\prueba\bootstrap.js:94:37)
反对。(F:\Repositories\node project bootstraper\prueba\bootstrap.js:109:11)
at模块编译(内部/modules/cjs/loader.js:955:30)
at Object.Module._extensions..js(internal/modules/cjs/loader.js:991:10)
在Module.load(内部/modules/cjs/loader.js:811:32)
at Function.Module._load(内部/modules/cjs/loader.js:723:14)
位于Function.Module.runMain(internal/modules/cjs/loader.js:1043:10)
在internal/main/run\u main\u module.js:17:11{
错误号:-4058,
系统调用:“打开”,
代码:'enoint',
路径:'./package.json'
}
我认为这是因为在编译时文件package.json不存在,它只是在“npm init-y”命令完成执行后才存在


有没有办法解决这个问题?我真的很想制作一个脚本,在没有用户干预的情况下生成所有内容。

您过早地调用了函数。而不是

。然后(addScriptsToPackageJson())


。那么(addScriptStopPackageJSON)

你就是那个男人!不知道那是怎么从我身边溜走的。。。。谢谢