Выполнить обещание скрипта Node через код и через терминал - PullRequest
0 голосов
/ 04 мая 2018

Кто-нибудь получил представление о том, как запустить скрипт Node, который содержит обещание в виде кода, но в то же время сделать его доступным для использования в качестве терминальной команды? Я хочу, чтобы скрипт был частью цепочки, но он также должен быть исполняемым сам по себе.

Это должно работать (пример кода):

var myFile = require('foobar')({
  file: 'index.html'
}).then(...);

и это также (пример терминала):

$ node ./foobar.js --file=index.html

Содержимое foobar содержит обещание, что-то вроде:

// foobar.js
module.exports = function(opts) {
    return new Promise(function(resolve, reject) {
        // logic here
        resolve();
    });
};

1 Ответ

0 голосов
/ 04 мая 2018

Я получил следующее решение:

/**
 * @param {Object} args
 * @param {String} args.file
 */
module.exports = function(args) {
    return new Promise(function(resolve, reject) {
        //
    });
};

// Check if the second process.argv item is this filename. If so, we 
// know it has been called using `$ node ./foobar.js`
if (process.argv[1] === __filename) {
    // Execute the `module.exports` with the process.argv as an object,
    // converted by `minimist` module.
    module.exports(require('minimist')(process.argv.slice(2)));
}

Таким образом, я могу назвать скрипт как:

require('foobar.js')({file: 'myfile.html'})

но также как:

$ node ./foobar.js --file=myfile.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...