Задать вопрос
eruditecat
@eruditecat
Красноглазик

Как запустить #!/usr/bin/env node с аргументами?

Вопрос прежде всего к знатокам Linux shell, чем к node.js (специфичные вещи изложил максимально доступно).

Допустим, я хочу использовать аргумент --harmony при вызове node.

Есть файл test, который мы вызываем, передавая ему JSON:
./test '{"message":"Hello World!"}'

Содержание файла:
#!/usr/bin/env node
'use strict';
/* jshint node: true */
/* jshint esversion: 6 */

// Получаем значение переданного аргумента.
var json = GLOBAL.process.argv[2];

/*
Если интересно, то GLOBAL.process.argv в данном вызове будет таков:
GLOBAL.process.argv = [
    '/usr/bin/nodejs',
    '/путь/к/файлу/test',
    '{"message":"Hello World!"}'
];
*/

// Получаем объект из JSOn
var args = JSON.parse(json);

// Деструктурируем объект, получая переменную message из свойства args.message
var {message} = args;

/*
А вот здесь облом, ибо дестрктуризация поддерживается экспериментально
и включается вызовом node с аргументами --harmony и --harmony_destructuring
*/

console.log(message);


Вопрос — КАК мне объявить эти аргументы в #!/usr/bin/env node?
  • Вопрос задан
  • 1379 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
Комментировать
@Aves
#!/bin/sh

":" //# comment; exec /usr/bin/env node --harmony --harmony_destructuring "$0" "$@"

sambal.org/2014/02/passing-options-node-shebang-line
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы