Утилита вывода сообщений отладки для JavaScript
|
|
7 months ago | |
|---|---|---|
| .husky | 8 months ago | |
| dist | 7 months ago | |
| src | 7 months ago | |
| .c8rc | 8 months ago | |
| .commitlintrc | 8 months ago | |
| .editorconfig | 8 months ago | |
| .gitignore | 8 months ago | |
| .mocharc.cjs | 8 months ago | |
| .prettierrc | 8 months ago | |
| LICENSE | 8 months ago | |
| README.md | 8 months ago | |
| build-cjs.js | 8 months ago | |
| eslint.config.js | 8 months ago | |
| package.json | 7 months ago | |
| tsconfig.json | 8 months ago |
Утилита вывода сообщений отладки для JavaScript.
npm install @e22m4u/js-debug
Поддержка ESM и CommonJS стандартов.
ESM
import {createDebugger} from '@e22m4u/js-debug';
CommonJS
const {createDebugger} = require('@e22m4u/js-debug');
Интерполяция строк (см. спецификаторы @e22m4u/js-format).
import {createDebugger} from '@e22m4u/js-debug';
const debug = createDebugger();
debug('Got value %v.', 100);
debug('Got values %l.', ['foo', 10, true]);
// Got value 100.
// Got values "foo", 10, true.
Дамп значений.
import {createDebugger} from '@e22m4u/js-debug';
const debug = createDebugger();
debug({
email: 'john.doe@example.com',
phone: {
mobile: '+1-555-123-4567',
home: '+1-555-987-6543'
},
});
// {
// email: 'john.doe@example.com',
// phone: {
// mobile: '+1-555-123-4567',
// home: '+1-555-987-6543'
// }
// }
Дополнительное сообщение над дампом.
import {createDebugger} from '@e22m4u/js-debug';
const debug = createDebugger();
debug({
orderId: 988,
date: '2023-10-27',
totalAmount: 120.50,
}, 'Order details:');
// Order details:
// {
// orderId: 988,
// date: '2023-10-27',
// totalAmount: 120.50,
// }
Определение пространства имен.
import {createDebugger} from '@e22m4u/js-debug';
const debug1 = createDebugger('myApp');
const debug2 = createDebugger('myApp', 'myService');
const debug3 = createDebugger('myApp:myService');
debug1('Hello world');
debug2('Hello world');
debug3('Hello world');
// myApp Hello world
// myApp:myService Hello world
// myApp:myService Hello world
Использование пространства имен из переменной окружения.
import {createDebugger} from '@e22m4u/js-debug';
process.env['DEBUGGER_NAMESPACE'] = 'myApp';
const debug = createDebugger();
debug('Hello world');
// myApp Hello world
Расширение сегментов пространства имен.
import {createDebugger} from '@e22m4u/js-debug';
const debug1 = createDebugger();
const debug2 = debug1.withNs('myApp');
const debug3 = debug2.withNs('myService');
debug1('Hello world');
debug2('Hello world');
debug3('Hello world');
// Hello world
// myApp Hello world
// myApp:myService Hello world
Использование статичного хэша.
import {createDebugger} from '@e22m4u/js-debug';
const debug1 = createDebugger().withHash();
debug1('Hi John');
debug1('Hi Tommy');
// r34s Hi John
// r34s Hi Tommy
const debug2 = createDebugger().withHash();
debug2('Hi John');
debug2('Hi Tommy');
// ier0 Hi John
// ier0 Hi Tommy
Определение длины хэша.
import {createDebugger} from '@e22m4u/js-debug';
const debug = createDebugger().withHash(15);
debug('Hi John');
debug('Hi Tommy');
// we1gf4uyc4dj8f0 Hi John
// we1gf4uyc4dj8f0 Hi Tommy
Использование смещений.
import {createDebugger} from '@e22m4u/js-debug';
const debug1 = createDebugger().withOffset(1);
const debug2 = createDebugger().withOffset(2);
const debug3 = createDebugger().withOffset(3);
debug1('Hello world');
debug2('Hello world');
debug3('Hello world');
// Hello world
// Hello world
// Hello world
Комбинирование методов.
import {createDebugger} from '@e22m4u/js-debug';
const debug = createDebugger('myApp').withNs('myService').withHash();
const debugWo1 = debug.withOffset(1);
const contact = {
email: 'john.doe@example.com',
phone: {
mobile: '+1-555-123-4567',
home: '+1-555-987-6543'
},
}
debug('Iterating over %v participants.', 10);
debugWo1('Looking for contacts of %v participant.', 1);
debugWo1(contact, 'Participant contacts found:');
// myApp:myService:o3pk Iterating over 10 participants.
// myApp:myService:o3pk Looking for contacts of 1 participant.
// myApp:myService:o3pk Participant contacts found:
// myApp:myService:o3pk {
// myApp:myService:o3pk email: 'john.doe@example.com',
// myApp:myService:o3pk phone: {
// myApp:myService:o3pk mobile: '+1-555-123-4567',
// myApp:myService:o3pk home: '+1-555-987-6543'
// myApp:myService:o3pk },
// myApp:myService:o3pk }
По умолчанию вызовы функции debug ничего не выводят.
Чтобы увидеть отладочные сообщения, необходимо указать, какие именно
пространства имен вас интересуют. Это делается с помощью специального
паттерна (шаблона). Механизм включения зависит от среды выполнения.
DEBUGВ среде Node.js используется переменная окружения DEBUG. Вы можете установить её при запуске вашего скрипта.
# включить конкретное пространство имен
DEBUG=myApp node your_script.js
# включить все пространства имен, начинающиеся с 'myApp:'
DEBUG=myApp:* node your_script.js
# включить несколько пространств имен через запятую
DEBUG=myApp:service,lib:utils node your_script.js
# если используете пробелы, нужны кавычки
DEBUG="myApp:service lib:utils" node your_script.js
# включить ВСЕ пространства имен
DEBUG=* node your_script.js
В веб-браузерах для управления выводом используется ключ debug в localStorage. Вы можете установить его значение через консоль разработчика.
// включить конкретное пространство имен
localStorage.debug = 'myApp';
// включить все пространства имен, начинающиеся с 'myApp:'
localStorage.debug = 'myApp:*';
// включить несколько (через запятую или пробел)
localStorage.debug = 'myApp:service,lib:utils';
// или
localStorage.debug = 'myApp:service lib:utils';
// включить ВСЕ
localStorage.debug = '*';
// отключить вывод
localStorage.removeItem('debug');
// или
localStorage.debug = '';
i. После изменения localStorage.debug обычно
требуется перезагрузить страницу, чтобы изменения вступили в
силу.
myApp:myService);myApp* соответствует myApp,
myApp:myService и т.д.;* включает вывод для всех пространств
имен;Примеры шаблонов в окружении Node.js:
node main.js # ничего не выведет
DEBUG=* node main.js # выведет все сообщения
DEBUG=app node main.js # только пространство имен app
DEBUG=app:* node main.js # пространства имен с префиксом app:
DEBUG=app:worker,legacy node main.js # только app:worker и legacy
npm run test
MIT