C H A N N G

写作的意义,是分享给未来的自己

教你如何在nodejs中调用其他npm包的cli命令

当你想要在命令行中调用当前项目install的某个package中的某个命令,大家都知道,很简单。
例如 pm2,直接在scripts中加入如下代码就行。然后使用npm run logs即可

"scripts": {
    "logs": "pm2 logs"
  },

但是如果想要在nodejs中调用呢?

请使用如下代码

//index.js
const node_modules = require('get_node_modules_path');
const spawn = require('cross-spawn');
spawn.sync(node_modules()+'/.bin/pm2', ['logs'], { stdio: 'inherit' });

这样直接 node index 可以直接调用了


如果需要作为cli工具使用,请在package.json中加入bin字段

"bin": {
    "channglogs": "index.js"
  },

这样当你全局引入模块,或者使用npm link后可以直接使用命令channglogs

为什么要使用get_node_modules_path?因为当使用npxnode_modules会存放在缓存位置
使用get_node_modules_path可以找到node_modules存放的位置

用问题可以留言咨询

京ICP备18015771号