Где найти файл config json

Обновлено: 06.07.2024

This server is using a modified version of the map.

В данном разделе будет описываться настройка файла сервера Unturned, а именно - Config.json, путь к которому Servers/unturned/Config.json

Ниже подробно описан каждый пункт файла "Config.json". Файл делится на 4 раздела: Lobby and secure, Easy, Normal, Hard Для каждой сложности игры задаются определенные параметры, которые будут работать для каждого по отдельности.

Lobby and secure - Настройка защиты и вида в меню поиска сервера.

В каждой из сложностей игры есть 9 разделов: Item, Vehicles, Zombies, Animals, Barricades, Structures, Players, Lighting, Objects, о которых и пойдет речь в данной статье.

Icon - иконка сервера в поисковом лобби;

Thumbnail - иконка сервера в меню подключения и информации о нем;

Desc_Hint - мини описание сервера, под названием сервера;

Desc_Full - описание сервера в меню подключения к нему;

Desc_Server_List - описание сервера в меню поиска;

Monetization - новое поле "Monetization" в файле Config.json каждого сервера по умолчанию имеет значение "Unspecified", но может быть установлено в "None" или "NonGameplay". При настройке этого поля, пожалуйста, убедитесь, что оно правдиво. "None" предназначен для немонетизированных серверов или серверов только для пожертвований, а "NonGameplay" для серверов с покупками, которые не дают игрового преимущества. Игроки, фильтрующие список серверов по "NonGameplay", также увидят серверы "None".

VAC_Secure - защита сервера анти-читом VAC;

BattlEye_Secure - защита сервера анти-читом BattlEye;

Max_Ping_Milliseconds - максимальный пинг игрока;

Timeout_Queue_Seconds - отключение игрока, после потери соединения с его клиентом игры;

Timeout_Game_Seconds - отключение игрока, после потери соединения с его клиентом игры;

Max_Packets_Per_Second - максимальная передача пакетов в секунду;

Enable_Kick_Input_Spam - кик игрока за спам;

Enable_Kick_Input_Timeout - кик игрока из-за потери соединения с сервером;

Примечание: Пункт "Server" старайтесь не изменять, в особенности, все подпункты, которые зачеркнуты выше, любое изменение данных подпунктов, может привести сервер к нестабильной работе!

Я работал над несколькими приложениями Node и искал хороший шаблон хранения настроек, связанных с развертыванием. В мире Django (откуда я родом) обычной практикой было бы иметь settings.py файл, содержащий стандартные настройки (часовой пояс и т. Д.), А затем файл local_settings.py для конкретных настроек развертывания, т.е. с какой базой данных общаться, с каким сокетом memcache, адресом электронной почты для администраторов и так далее.

Я искал похожие шаблоны для Node. Было бы неплохо просто файл конфигурации, так что его не нужно смешивать со всем остальным app.js , но я считаю важным иметь способ иметь специфическую для сервера конфигурацию в файле, который не находится под контролем исходного кода. Одно и то же приложение вполне может быть развернуто на разных серверах с совершенно разными настройками, с необходимостью иметь дело с конфликтами слияния и всем, что не является моей идеей забавы.

Так есть ли какой-то фреймворк / инструмент для этого или все просто взломали что-то вместе?

я на самом деле нравится, как конфигурация выполняется в mean.js . в основном, они хранят соответствующие настройки приложения в отдельном модуле, основанном на различных настройках для среды приложения (для производства, разработки, тестирования) и передачи определенных деталей через переменные среды приложения, такие как секреты и т. д.

Я использую package.json для своих пакетов и config.js для моей конфигурации, которая выглядит следующим образом:

Я загружаю конфиг из моего проекта:

и затем я могу получить доступ к своим вещам из config.db_host , config.db_port и т.д . Это позволяет мне использовать жестко закодированные параметры или параметры, хранящиеся в переменных среды, если я не хочу хранить пароли в управлении исходным кодом.

Я также генерирую package.json и вставляю раздел зависимостей:

Когда я клонирую проект на свою локальную машину, я запускаю npm install установку пакетов. Больше информации об этом здесь .

Проект хранится в GitHub, с добавленными пультами для моего производственного сервера.

что происходит, когда у вас разные настройки для dev и prod? У меня нет, но вот один из способов сделать это . для каждого env установить имя env в переменной ENV. Затем в этом файле просто JavaScript. Используйте оператор case или if для выборочной загрузки соответствующих переменных. Вы могли бы даже создать отдельный конфигурационный подфайл для каждого env, и в операторе if перезагрузить подфайл здесь в subconfig var и экспортировать этот subconfig var в основную конфигурацию. Все, что я в основном пытаюсь сказать, это то, что это просто JS, так что вы можете быть креативным что такое process.env? где он находится? И как это установить? Я думал: «Ух ты . Я смотрел на node.js несколько часов, и мое приложение уже работает . Кстати, может быть, я поделюсь этим случайным кусочком кода, который придумал» Разве вы не можете использовать переменные окружения для хранения этих паролей? Разве не для этого предназначена эта строка: config.twitter.password = process.env.TWITTER_PASSWORD || 'пароль';

Вы можете требовать файлы JSON с Node v0.5.x ( ссылаясь на этот ответ )

Не так впечатлен этой функцией. Вам может потребоваться ("./ config.js"), и вы получите возможность добавлять комментарии к файлам конфигурации, которые я считаю очень важными, и другие навороты. Если вы конфигурируете только свойства, а код отсутствует, вы ничего не теряете по требованию (config.js) с вашим JSON с префиксом @teknopaul, вы правы, но когда-то шла большая дискуссия о «правильности» / удобстве использования тупых и умных шаблонных систем, которая говорила мне: (1) вы обычно хотите декларативный / тупой язык для шаблонов / параметров (2) плохая идея - реконструировать «почти PL», чтобы просто использовать шаблоны (или конфигурацию) - лучше повторно использовать существующий реальный PL с известным поведением. пока +1 для утилизации JS для выполнения пользовательских настроек; -1 за не идущий декларативный подход. мы видели некоторые довольно сложные вещи конфигурации, сделанные декларативным способом; моя кишка говорит мне, что это путь. Нет Intellisense для объектов из файлов JSON в VScode (конец 2017 года). Полностью рабочий intellisense для объектов из module.exports.

Намного позже я нашел довольно хороший модуль Node.js для управления конфигурацией: nconf .

Он также поддерживает хранение настроек в Redis , написание файлов конфигурации и имеет довольно солидный API, а также поддерживается одним из наиболее уважаемых магазинов Node.js, Nodejitsu , как часть инициативы платформы Flatiron , так что это должно быть довольно перспективный.

Возможно глупый вопрос, но я не видел четкого объяснения: где я могу установить переменные среды узла? Я уже использую nconf, но не ясно, где бы я устанавливал переменные среды. Это в nginx / apache? Это другой конфигурационный файл? Я не думаю, что использовать файл .json в качестве конфигурации является хорошей идеей, так как комментарии не допускаются. Это выглядит великолепно. Я думаю, что вы удивитесь многим Unixheads, если файл конфигурации переопределяет параметры командной строки и переменные среды. Мы привыкли к следующему порядку возрастания приоритета: конфигурационные файлы, переменные среды, параметры командной строки. @sheldonh Подождите, пока вы не обнаружите, что булевы параметры всегда установлены на argv, поэтому нарушается приоритет . /

Мое решение довольно простое:

Загрузите конфигурацию среды в ./config/index.js

Определите некоторые значения по умолчанию в ./config/config.global.js

Переопределите значения по умолчанию в ./config/config.test.js

Используя его в ./models/user.js:

Запуск вашего приложения в тестовой среде:

Я предпочитаю этот. Как уже упоминалось, JSON не является предпочтительной структурой хранения, и эта иерархия с глобальными элементами проста и эффективна Единственная причина, по которой я бы предпочел это, а не nconf, заключается в том, что он допускает формат .js для файлов конфигурации (dev, test и prod). что позволяет нам задокументировать каждый параметр конфигурации, который в противном случае невозможен в формате JSON. Кстати, по NODE_ENV умолчанию «развитие». Вы должны проверить «производство» вместо этого. Я не проверяю развитие. Я по умолчанию на это. Не уверен, почему я когда-либо по умолчанию на производство.

Вы также можете посмотреть на dotenv, который следует принципам приложения из двенадцати факторов .

Раньше я использовал node-config, но по этой причине создал dotenv. Он был полностью вдохновлен библиотекой рубинов.

Использование довольно просто:

Затем вы просто создаете файл .env и помещаете туда свои настройки следующим образом:

Это дотенв для nodejs.

Или просто используйте foreman run node xx.js это автоматически прочитает в вашем файле .env. я бы использовал этот подход для производства также? @lamar no, вы устанавливаете их в переменных env на реальном сервере. Это было каждый раз, когда вы развертываете, они есть, но не в исходном коде. @ Lamar да, вы можете это сделать, как более портативную альтернативу настройке переменных env на сервере. Важным моментом является не включать .env файл в процесс управления версиями или в процесс развертывания.

Ребята, вы используете npm для запуска ваших скриптов (env и т. Д.)?

Если вы используете .env файлы, вы можете включить их в свой package.json и использовать npm для их создания / запуска.

затем запустите сценарии npm:

Можете ли вы объяснить, что такое «источник»? Я получаю source : not found @JohnnyBizzle source (или просто . ) - это встроенная команда в оболочках Unix (Bash и т. Д.) Для чтения и выполнения команд из данного файла в текущей оболочке . То есть команды не выполняются в под-оболочке. Эффект этого в этом примере состоит в том, что переменные среды, определенные в prod.env , добавляются в текущую оболочку и, следовательно, передаются любому дочернему процессу, порожденному этой оболочкой. Вы, кажется, используете Windows CMD. Смотрите этот вопрос для более подробной информации. Стоит отметить - приложение 12 factor рекомендует не создавать dev.env и prod.env , но иметь один .env файл на развертывание.

Вы также можете посмотреть на node-config, которая загружает файл конфигурации в зависимости от переменной $ HOST и $ NODE_ENV (немного похоже на RoR): документация .

Это может быть весьма полезным для различных параметров развертывания ( development , test или production ).

Просто сделайте простое settings.js с exports :

Затем в вашем скрипте выполните require :

Все ваши настройки теперь будут доступны через settings переменную:

@ backdesk Конечно, вы можете настроить секретную систему хранения, которая будет шифровать секреты и ограничивать доступ с помощью ip, некоторых токенов и т. д. Но в конечном итоге все сводится к чтению некоторых файлов с диска, будь то зашифрованное или не. @backdesk Нет проблем с примером. Это просто пример для объяснения чего-то конкретного.
  • Публичная конфигурация (которую видит внешний интерфейс) против частной конфигурации (парень mograbi понял это правильно). И обеспечение их хранятся отдельно.
  • Секреты как ключи
  • Значения по умолчанию против переопределений, зависящих от среды
  • Фронтенд связки

Вот как я делаю свою конфигурацию:

  • config.default.private.js - В управлении версиями это параметры конфигурации по умолчанию, которые видны только вашему бэкэнду.
  • config.default.public.js - В управлении версиями это параметры конфигурации по умолчанию, которые видны бэкэндом и внешним интерфейсом.
  • config.dev.private.js - Если вам нужны разные частные настройки по умолчанию для dev.
  • config.dev.public.js - Если вам нужны разные публичные значения по умолчанию для dev.
  • config.private.js - Не в управлении версиями, это специфические параметры среды, которые переопределяют config.default.private.js
  • config.public.js - Не в управлении версиями, это специфические параметры среды, которые переопределяют config.default.public.js
  • keys/ - Папка, в которой каждый файл хранит какой-то секрет. Это также не под контролем версий (ключи никогда не должны быть под контролем версий).

Я использую простые старые файлы javascript для конфигурации, поэтому у меня есть все возможности языка javascript (включая комментарии и возможность делать такие вещи, как загрузка файла конфигурации по умолчанию в файле, специфичном для среды, чтобы затем их можно было переопределить). Если вы хотите использовать переменные окружения, вы можете загрузить их в эти файлы конфигурации (хотя я рекомендую не использовать env vars по той же причине, по которой я не рекомендую использовать файлы json - у вас нет возможностей языка программирования для создания ваш конфиг).

Причина, по которой каждый ключ находится в отдельном файле, предназначена для использования установщиком. Это позволяет вам иметь установщик, который создает ключи на компьютере и сохраняет их в папке ключей. Без этого ваш установщик может потерпеть неудачу при загрузке файла конфигурации, который не может получить доступ к вашим ключам. Таким образом, вы можете перемещаться по каталогу и загружать любые ключевые файлы, которые находятся в этой папке, не беспокоясь о том, что существует, а что нет в любой конкретной версии вашего кода.

Поскольку у вас, вероятно, есть ключи, загруженные в вашу личную конфигурацию, вы определенно не хотите загружать вашу личную конфигурацию в любой код внешнего интерфейса. В то время как, вероятно, было бы гораздо более идеальным полностью отделить вашу кодовую базу веб-интерфейса от вашей серверной части, во многих случаях PITA является достаточно большим барьером, препятствующим тому, чтобы люди делали это, таким образом, частная и общедоступная конфигурация. Но есть две вещи, которые я делаю, чтобы предотвратить загрузку приватного конфига в интерфейсе:

  1. У меня есть модульное тестирование, которое гарантирует, что мои пакеты веб-интерфейса не содержат один из секретных ключей, которые у меня есть в приватной конфигурации.
  2. У меня есть мой код внешнего интерфейса в папке, отличной от моего внутреннего кода, и у меня есть два разных файла с именем "config.js" - по одному для каждого конца. Для бэкэнда config.js загружает приватный конфиг, для внешнего интерфейса - публичный конфиг. Тогда вы всегда просто требуете ('config') и не беспокоитесь о том, откуда оно берется.

И последнее: ваша конфигурация должна быть загружена в браузер с помощью совершенно отдельного файла, чем любой другой код вашего внешнего интерфейса. Если вы связываете свой код внешнего интерфейса, общедоступная конфигурация должна создаваться как отдельный пакет. В противном случае ваш конфиг уже не является конфигом - это просто часть вашего кода. Конфиг должен быть разным на разных машинах.

Я работал над несколькими узловыми приложениями и искал хороший шаблон хранения настроек, связанных с deployment. В мире Django (откуда я родом) обычной практикой было бы иметь файл settings.py , содержащий стандартные настройки (timezone и т. д.), а затем файл local_settings.py для конкретных настроек deployment, т. е. с какой базой данных разговаривать, какой сокет memcache, адрес электронной почты для администраторов и так далее.

Я искал подобные паттерны для узла. Просто конфигурационный файл был бы хорош, поэтому его не нужно засовывать вместе со всем остальным в app.js , но я считаю важным иметь способ иметь специфичную для сервера конфигурацию в файле, который не находится в системе управления версиями. Одно и то же приложение вполне может быть развернуто на разных серверах с совершенно разными настройками, и иметь дело с конфликтами слияний и всем прочим-это не мое представление о веселье.

Так есть ли для этого какой-то фреймворк/инструмент, или все просто взламывают что-то вместе сами?

Пакет, построенный для Django, django-конфигураций, расширяет загрузку настроек на основе модулей с помощью объектно-ориентированных шаблонов. Пакет использует переменные окружения DJANGO_SETTINGS_MODULE и DJANGO_CONFIGURATION для идентификации файла настроек и загрузки соответствующей.

Сейчас 2013 год, и многое изменилось с 2011 года (новые & устаревших библиотек), когда были даны ответы на самые популярные node.js deployment вопросов. Я хотел бы знать, что вы считаете лучшими практиками при развертывании node.js. Как автоматически перезапустить приложение node.js Монит? Как.

Я использую package.json для своих пакетов и config.js для своей конфигурации, которая выглядит следующим образом:

Я загружаю конфигурацию из своего проекта:

и тогда я смогу получить доступ к своим вещам из config.db_host , config.db_port и т. д. Это позволяет мне либо использовать жестко закодированные параметры, либо параметры, хранящиеся в переменных среды, если я не хочу хранить пароли в системе управления версиями.

Я также генерирую package.json и вставляю раздел зависимостей:

Когда я клонирую проект на свою локальную машину, я запускаю npm install для установки пакетов. Более подробная информация об этом здесь .

Проект хранится в GitHub, с добавлением пультов дистанционного управления для моего рабочего сервера.

Вы можете потребовать JSON файла с узла v0.5.x ( ссылка на этот ответ )

Гораздо позже я нашел довольно хороший модуль Node.js для управления конфигурацией: nconf .

Он также поддерживает хранение настроек в Redis, написание конфигурационных файлов и имеет довольно солидный API, а также поддерживается одним из наиболее уважаемых магазинов Node.js, Nodejitsu , в рамках инициативы Flatiron framework, так что он должен быть достаточно перспективным.

В node.js я пытаюсь найти путь к тому, где должен быть файл настроек моего приложения, хорошим кросс-платформенным способом. Unix:

/.my-app/file Windows: %APPDATA%\my-app\file Mac:

/Library/Application Support/my-app/file (или

/.my-app/file) Или что-то в этом роде. Я не хочу жестко кодировать.

Мое решение довольно простое:

Загрузите конфигурацию среды в файл. / config/index.js

Определите некоторые значения по умолчанию в файле. / config / config.global.js

Переопределите значения по умолчанию в файле. / config / config.test.js

Используя его в . / models/user.js:

Запуск приложения в тестовой среде:

Вы также можете посмотреть на dotenv который следует постулатам приложение двенадцати факторов .

Раньше я использовал node-config, но по этой причине создал dotenv. Он был полностью вдохновлен библиотекой dotenv ruby.

Использование довольно простое:

Затем вы просто создаете файл .env и помещаете туда свои настройки вот так:

Это dotenv для nodejs.

Вы, ребята, используете npm для запуска своих скриптов (env и т. д.) ?

Если вы используете файлы .env , вы можете включить их в свой package.json и использовать npm для их источника/запуска.

затем запустите сценарии npm:

Вы также можете обратиться к node-config , который загружает конфигурационный файл в зависимости от переменных $HOST и $NODE_ENV (немного похоже на RoR) : документация .

Это может быть весьма полезно для различных настроек deployment ( development , test или production ).

Просто сделайте простой settings.js с exports :

Затем в вашем сценарии сделайте require :

Все ваши настройки теперь будут доступны через переменную settings :

  • Публичная конфигурация (это видно по интерфейсу) против частной конфигурации (Гай мограби правильно понял это). И обеспечение того, чтобы они хранились отдельно.
  • Секреты как ключи
  • Значения по умолчанию и переопределения, зависящие от среды
  • Связки фронтэнд

Вот как я делаю свою конфигурацию:

  • config.default.private.js -в системе управления версиями это параметры конфигурации по умолчанию, которые могут быть видны только вашему бэкэнду.
  • config.default.public.js -в системе управления версиями это параметры конфигурации по умолчанию, которые могут быть видны бэкенду и фронтенду
  • config.dev.private.js -Если вам нужны разные частные значения по умолчанию для dev.
  • config.dev.public.js -Если вам нужны разные публичные значения по умолчанию для dev.
  • config.private.js -не в системе управления версиями, это параметры конкретной среды, которые переопределяют config.default.private.js
  • config.public.js -не в системе управления версиями, это параметры конкретной среды, которые переопределяют config.default.public.js
  • keys/ -папка, в которой каждый файл хранит определенный секрет. Это также не находится под контролем версий (ключи никогда не должны находиться под контролем версий).

Я использую простые старые файлы javascript для настройки, поэтому у меня есть вся мощь языка javascript (включая комментарии и возможность делать такие вещи, как загрузка конфигурационного файла по умолчанию в файл конкретной среды, чтобы затем они могли быть переопределены). Если вы хотите использовать переменные окружения, вы можете загрузить их в эти конфигурационные файлы (хотя я не рекомендую использовать env vars по той же причине, по которой я не рекомендую использовать файлы json - у вас нет возможностей языка программирования для создания вашей конфигурации).

Причина, по которой каждый ключ находится в отдельном файле, заключается в использовании установщика. Это позволяет вам иметь установщик, который создает ключи на компьютере и сохраняет их в папке keys. Без этого ваш установщик может выйти из строя при загрузке конфигурационного файла, который не может получить доступ к вашим ключам. Таким образом, вы можете пройти по каталогу и загрузить любые ключевые файлы, которые находятся в этой папке, не беспокоясь о том, что существует, а что нет в любой данной версии вашего кода.

Поскольку у вас, вероятно, есть ключи, загруженные в вашу частную конфигурацию, вы определенно не хотите загружать свою частную конфигурацию в какой-либо интерфейсный код. Хотя, вероятно, строго более идеально полностью отделить вашу интерфейсную кодовую базу от вашего бэкенда, во многих случаях PITA является достаточно большим барьером, чтобы люди не могли этого сделать, таким образом, private vs public config. Но есть две вещи, которые я делаю, чтобы предотвратить загрузку частной конфигурации во внешний интерфейс:

  1. У меня есть модульный тест, который гарантирует, что мои пакеты frontend не содержат ни одного из секретных ключей, которые у меня есть в частной конфигурации.
  2. У меня есть мой frontend-код в другой папке, чем мой backend-код, и у меня есть два разных файла с именем "config.js" - по одному для каждого конца. Для серверной части, config.js загружает индивидуальный конфиг для фронтэнда, он загружает общественного конфигурации. Тогда вы всегда просто требуете('config') и не беспокоитесь о том, откуда он берется.

И последнее: ваша конфигурация должна быть загружена в браузер через совершенно отдельный файл, чем любой другой ваш интерфейсный код. Если вы bundle свой frontend-код, то публичная конфигурация должна быть построена как полностью отдельный bundle. В противном случае ваша конфигурация на самом деле больше не является конфигурацией - это просто часть вашего кода. Конфигурация должна быть разной на разных машинах.

Осужденный -это еще один вариант, который добавляет схему для проверки. Как и nconf, он поддерживает загрузку параметров из любой комбинации переменных среды, аргументов, файлов и объектов json.

Пример из README:

Вы можете использовать Konfig для конкретных конфигурационных файлов среды. Он автоматически загружает конфигурационные файлы json или yaml, имеет значение по умолчанию и функции динамической конфигурации.

Пример из Konfig repo:

В производстве предположим, что мы начинаем приложение с $ NODE_ENV=production PORT=4567 node app.js

Я создам папку как config файл с именем config.js и позже буду использовать этот файл везде, где это необходимо, как показано ниже

Затем, если я хочу использовать этот конфигурационный файл где-нибудь

Я сначала импортирую как показано ниже

var config = require('./config');

и я могу получить доступ к значениям, как показано ниже

Просто используйте npm модуль config (более 300000 загрузок)

Node-config организует иерархические конфигурации для развертывания приложений.

Он позволяет определить набор параметров по умолчанию и расширить их для различных сред deployment (разработка, контроль качества, постановка, производство и т. д.).

Лучше разделить 'development' и 'production' конфигурации.

Я использую следующий способ: Вот мой файл config/index.js:

Для требовать настройка используйте следующие:

Чем вы можете использовать объект конфигурации :

Я немного опоздал в игре, но я не мог найти то, что мне нужно здесь - или где - либо еще-поэтому я написал что-то сам.

Мои требования к механизму настройки следующие:

  1. Поддержка front-end. Какой смысл, если интерфейс не может использовать конфигурацию?
  2. Поддержка settings-overrides.js -которая выглядит так же, но допускает переопределение конфигурации в settings.js . Идея здесь заключается в том, чтобы легко изменять конфигурацию без изменения кода. Я нахожу это полезным для saas.

Несмотря на то, что я меньше забочусь о поддержке сред - The объяснит, как легко добавить его в мое решение

Объяснение

  • undefined означает, что это свойство является обязательным
  • null означает, что это необязательно
  • meConf -в настоящее время код нацелен на файл под app . meConf - это файлы переопределений, которые нацелены на conf/dev -который игнорируется моим vcs.
  • publicConfiguration -будет виден с фронт-энда и бэк-энда.
  • privateConfiguration -будет виден только с бэк-энда.

sendPublicConfiguration -маршрут, который откроет общедоступную конфигурацию и назначит ее глобальной переменной. Например, приведенный ниже код откроет общедоступную конфигурацию как глобальную переменную myConf во внешнем интерфейсе. По умолчанию он будет использовать имя глобальной переменной conf .

Логика перекрывает

  • privateConfiguration сливается с publicConfiguration, а затем с meConf.
  • publicConfiguration проверяет каждый ключ, если он имеет переопределение, и использует это переопределение. Таким образом, мы не раскрываем ничего личного.

Добавление поддержки среды

Даже если я не нахожу "environment support" полезным, может быть, кто-то и найдет.

Чтобы добавить поддержку среды, вам нужно изменить оператор meConf require на что-то вроде этого (псевдокод)

Точно так же вы можете иметь файл для каждой среды

и импортируйте правильный. rest логики остается прежней.

пример alt, который я просто использовал, потому что хотел большей гибкости, чем типичный файл .json, но не хотел, чтобы он абстрагировался в библиотеку, которая требовала бы зависимости, - это что-то вроде этого. По сути, экспорт немедленно вызываемой функции, которая возвращала объект со значениями, которые я хотел установить. Дает большую гибкость.

Здесь есть гораздо лучшее объяснение с полным примером. Использование конфигурационных файлов в Node.js

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

Затем вы можете использовать process.env.NODE_ENV , чтобы получить все переменные для вашей среды.

В дополнение к модулю nconf , упомянутому в этом ответе , и node-config , упомянутому в этом ответе, существуют также node-iniparser и IniReader, которые кажутся более простыми парсерами конфигурационных файлов .ini.

Вот аккуратный подход, вдохновленный этой статьей . Он не требует никаких дополнительных пакетов, кроме вездесущего пакета lodash . Кроме того, он позволяет управлять вложенными значениями по умолчанию с помощью перезаписи, зависящей от среды.

Во-первых, создайте папку config в корневом пути пакета, которая выглядит следующим образом

вот файл index.js

Теперь предположим, что у нас есть defaults.json примерно так

и development.json вот так

если вы сделаете config = require('./config') вот что вы получите

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

чем открыть json

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

Способ 1: Altova XMLSpy

Достаточно известная среда разработки, которую используют в том числе и веб-программисты. Эта среда также генерирует файлы JSON, следовательно способна и открывать сторонние документы с таким расширением.

Недостатков у данного ПО два. Первый – платная основа распространения. Пробная версия активна 30 дней, однако для её получения необходимо указать имя и почтовый ящик. Второй – общая громоздкость: человеку, которому просто нужно открыть файл, она может показаться чересчур навороченной.

Способ 2: Notepad++

Плюсов у Notepad++ изрядно – тут и отображение синтаксиса многих языков программирования, и поддержка плагинов, и малый размер… Однако в силу некоторых особенностей работает программа неторопливо, особенно если открыть в ней объемный документ.

Способ 3: AkelPad

Невероятно простой и в то же время богатый на возможности текстовый редактор от российского разработчика. В число поддерживаемых им форматов входит и JSON.

Как и Notepad++, этот вариант блокнота также бесплатен и поддерживает плагины. Он работает шустрее, однако большие и сложные файлы может не открыть с первого раза, так что имейте в виду такую особенность.

Способ 4: Komodo Edit

Бесплатное ПО для написания программного кода от компании Komodo. Отличается современным интерфейсом и широкой поддержкой функций для программистов.

В программе, к сожалению, отсутствует русский язык. Однако рядового пользователя скорее отпугнет избыточный функционал и непонятные элементы интерфейса – все-таки этот редактор ориентирован в первую очередь на программистов.

Способ 5: Sublime Text

Еще один представитель code-oriented текстовых редакторов. Интерфейс проще, чем у коллег, однако возможности те же. Доступна и портативная версия приложения.

К сожалению, Sublime Text недоступен на русском языке. Недостатком можно назвать и условно-бесплатную модель распространения: свободная версия ничем не ограничена, но время от времени появляется напоминание о необходимости покупки лицензии.

Способ 6: NFOPad

Простой блокнот, однако для просмотра документов с расширением JSON тоже подойдет.

NFOPad подходит для просмотра JSON-документов, однако есть нюанс – при открытии некоторых из них программа намертво зависает. С чем связана такая особенность – неизвестно, но будьте внимательны.

Способ 7: Блокнот

И наконец, стандартный текстовый процессор, встроенный в ОС Windows, также способен открывать файлы с расширением JSON.

Закрыть

Мы рады, что смогли помочь Вам в решении проблемы.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Закрыть

Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Читайте также: