Внедрение аргументов командной строки в JSON перед выполнением

Но это то, что я хочу сделать.

{
    "name": "tcp-web",
    "version": "1.0.0",
    "description": "The Curiosity Project",
    "main": "index.html",
    "scripts": {
        "bundle": "browserfy "
    },
    "author": "@Grandmother#5057",
    "license": "ISC"
}

Полная строка, которую мне нужно ввести в мою консоль, содержит массу скриптов и файлов css, которые необходимо объединить в 1 файл. Записывать это каждый раз - хлопотно, и если я напишу это статично в файле .JSON, мне всегда придется его редактировать.

Я хотел бы знать, можно ли ввести строку командной строки непосредственно в строку скрипты: {} в JSON.

Таким образом, мой файл JSON уже будет содержать все файлы, которые я добавил статически, затем я хотел бы ввести новые файлы в командную строку, чтобы они сочетались с уже написанной строкой сценария.

Интересно, возможно ли это?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
118
1

Ответы 1

Редактировать:

Вы могли бы сделать что-то вроде...

"scripts": {
    "main": "browserify index.js ${ADDITIONAL_FILES} -o assets/bundle/index.js"
}

Затем вызовите NPM следующим образом:

ADDITIONAL_FILES = "index2.js index3.js" npm run main

В этом фрагменте package.json скрипт main интерполирует переменную оболочки с именем ADDITIONAL_FILES. Если ADDITIONAL_FILES пусто, это будет пустая строка, которая ни на что не повлияет. Если ADDITIONAL_FILES имеет какое-то значение, оно будет заменено. В вызове NPM мы можем установить ADDITIONAL_FILES так же, как мы вызываем npm, добавляя ваши дополнительные файлы в вещи. Установка переменной, как указано выше, не будет сохраняться. Он будет жить только во время действия этой команды, поэтому вам не нужно беспокоиться о том, что ADDITIONAL_FILES будет установлен в последующих запусках.

Я немного подозреваю, зачем вам это нужно. Это говорит о том, что у вас есть несколько точек входа в ваше приложение, что необычно. Однако вы знаете о своем проекте больше, чем кто-либо другой :)

Надеюсь это поможет!


Старый ответ:

Это похоже на файл package.json. Все, что находится в scripts, будет выполняться в командной строке, поэтому здесь у вас есть большая гибкость.

Вы могли бы сделать что-то вроде...

"scripts": {
    "command": "MY_DATA=$(cat some_file) script_that_uses_MY_DATA_environment_variable.sh"
}

Если вы хотите получить имена файлов, вы можете написать небольшой скрипт Node для их сбора и вывода или даже использовать ls и awk, если вам удобнее работать с Bash. Это гибко. Есть несколько решений.

Если вам нужна более конкретная помощь, дайте мне знать с комментарием :)

Обновлено: в качестве альтернативы, если вы хотите описать контекст этой цели, мы можем помочь вам найти еще лучшее решение.

Кроме того, browserify будет объединять модули рекурсивно. Пока на файл Javascript прямо или косвенно ссылается первый файл, он будет включен в пакет. В идеале у вас не должно быть потерянных, несвязанных файлов, поэтому это должно охватывать большинство случаев использования.

Наконец, у вас опечатка в package.json. Это browserify, а не browserfy.

Что я хотел бы сделать, так это иметь свои сценарии по умолчанию в package.json. И затем, когда я запускаю определенный скрипт через командную строку, я хочу иметь возможность ввести дополнительный аргумент, который будет введен в строку скрипта до его выполнения. Я должен упростить это, сделал pastebin, где я получил эту демонстрацию с результатом, который я хотел бы получить. ПАСТЭБИН И спасибо, я действительно заметил опечатку!! Большое спасибо за помощь дружище. Ты уже научил меня кое-чему, и мне это нравится. Пища для мозга ;)

Gyzimo 14.03.2019 19:57

Ах, как жаль, что браузер берет файлы перед опциями. В npm есть способ добавить аргументы к команде run, но здесь это вам не поможет, потому что browserify ожидает в конце опции, а не файлы. Возможно, файлы и параметры взаимозаменяемы, но я не могу играть с этим прямо сейчас. Хм... Ваш pastebin странно пахнет... Я чувствую, что действительно должен быть способ не нуждаться в этом, но я недостаточно знаю, почему вы хотите это сделать. Тем не менее, я думаю, что у меня есть решение. Я отредактирую выше для него.

TheBeege 18.03.2019 09:03

правда это очень плохо. Я не нашел решения по этому вопросу, поэтому я просто введу файлы вручную. Большинство моих проблем решается с помощью модуля npm, поэтому я могу запускать несколько строк одновременно [npm одновременно]. Но спасибо за ваше время и помощь, приятель

Gyzimo 27.03.2019 03:54

Отличная реализация с конфигурацией запуска/отладки сервера Angular CLI в IntelliJ для моего приложения Angular/Spring-boot. Очень хорошо сработало для динамического использования различных конфигураций среды для каждого пользователя без необходимости изменять package.json, когда они хотят загрузить свои особенности и, возможно, внести изменения в репозиторий. Также разработчикам не нужно полностью игнорировать нажатие/вытягивание package.json.

Darrel Holt 16.08.2019 01:43

Другие вопросы по теме