Node.js 为节点运行的节点项目创建引导脚本
我正在制作一个脚本来引导我的所有项目,这样项目创建就像运行“node bootstrap.js”一样简单,脚本初始化目录,创建基本项目文件夹结构,安装依赖项(例如:nodemon、dotenv、jest等)并在package.json内配置脚本,例如“nodemon-r dotenv/config index.js”用于使用dotenv预加载启动nodemon。启动脚本时,我创建文件夹结构,然后在每个文件夹中创建示例文件,最后执行脚本的以下部分: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
// 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)
你就是那个男人!不知道那是怎么从我身边溜走的。。。。谢谢