Meteor npm在服务器重启时运行脚本

时间:2018-01-17 10:33:29

标签: meteor npm

有没有办法在每个Meteor服务器重启时运行npm脚本?

我尝试了postinstall挂钩,但它只在第一个本地应用程序启动时运行。

我认为必须有办法,因为重启会触发几个构建过程,其中一些必须是“可挂钩的”。

我第一次考虑使用build plugins,但似乎他们将大量配置从我的package.json移开。

任何人都知道这件事吗?

1 个答案:

答案 0 :(得分:0)

您可以在服务器端的Meteor.startup()代码中运行npm脚本。以下示例应位于/server文件夹下可能会有所帮助。

import { exec } from 'child_process';

Meteor.startup(() => {
   async function sh(cmd) {
     return new Promise(function (resolve, reject) {
       exec(cmd, (err, stdout, stderr) => {
         if (err) {
           reject(err);
         } else {
           resolve({ stdout, stderr });
         }
       });
     });
   }

   async function excScript() {
     let { stdout } = await sh('npm -ls'); // runs "npm -ls"
     for (let line of stdout.split('\n')) {
       console.log(`npm -ls: ${line}`);
     }
   } 
   excScript();
}