
本文共 1083 字,大约阅读时间需要 3 分钟。
adonis serve命令在@adonisjs/cli/src/Commands/Serve/index.js文件中启动逻辑如下:
定义ACE文件路径为执行命令时所在目录的ace文件const acePath = path.join(process.cwd(), 'ace');
定义应用入口文件路径为当前目录下的server.jsconst appFile = path.join(process.cwd(), 'server.js');
检查ACE文件是否存在,若不存在则提示错误信息并退出const exists = await this.pathExists(acePath);if (!exists) {this.error('请确保您在AdonisJS项目目录下执行命令');return;}
处理watch选项,如果watch为字符串则转换为数组并设置dev模式if (watch && typeof watch === 'string') {watch = watch.split(',').map(item => item.trim());dev = true;}
根据开发模式或生产模式确定监控的文件扩展类型const ext = dev ? 'js json' : 'null';
定义需要监控的目录,开发模式下监控当前目录及 .env 文件const watchDirs = watch || (dev ? [process.cwd(), '.env'] : []);
启动nodemon模块,监控文件变更并重启服务const nodemon = require('nodemon');nodemon({script: appFile,execMap: {js: debug ? 'node --inspect' : 'node'},ext: ext,legacyWatch: !!polling,ignore: ['tmp/', 'public/'],watch: watchDirs});
注册nodemon事件处理函数nodemon.on('start', () => this.onStart(name, url)).on('restart', this.onRestart.bind(this)).on('crash', this.onCrash.bind(this)).on('quit', () => this.onQuit(name, url));
该命令主要通过nodemon实现文件监控和服务重启,适用于开发和生产环境。
发表评论
最新留言
关于作者
