Как получить данные «Покрытия» из Chrome Dev Tools - PullRequest
0 голосов
/ 03 февраля 2019

Я использую вкладку Coverage в Chrome Dev Tools, и у меня действительно большой файл, и после долгой игры с Coverage становится достаточно ясно, что используется только 15% моего CSS-кода (я имитировал нажатие кнопок, зависаниеменю ...).

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

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

enter image description here

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

Я нахожусь в процессе создания PHP-скрипта, который анализирует экспортированный файл Coverage JSON и выводит только извлеченные использованные CSS / JS.К сожалению, я столкнулся с ошибкой: в какой-то момент анализатор JSON теряет правильное число символов, и я получаю неправильный или неправильный синтаксис CSS / JS.Оно отключено только на несколько символов, но количество символов, которое оно отключает, является переменным, поэтому почти невозможно предсказать его во время синтаксического анализа.

Я не уверен, но я думаю, что проблема связана с PHPвыполняется на сервере, и сервер может читать символы в исходном файле CSS иначе, чем браузер.Я попытаюсь написать анализатор Coverage JSON на JavaScript.Когда я это сделаю, я обязательно опубликую здесь код для всех пользователей.

Извините, что не могу помочь, я просто хотел предостеречь людей от использования PHP, чтобы сделать это, как кажетсяне правильно читать символы в больших файлах CSS.

0 голосов
/ 11 марта 2019

Благодаря статье Филиппа Кригеля (https://www.philkrie.me/2018/07/04/extracting-coverage.html) мне удалось настроить Puppeteer для извлечения CSS покрытия из URL и вывода этого CSS в файл.

Вот как это сделать:

Шаг 1. Глобальная установка node.js

Шаг 2. Создание папки на рабочем столе

Шаг 3. Внутри папки установите Node Package Manager (NPM) имодуль узла Puppeteer

Шаг 4: Создайте файл JavaScript внутри папки, назовите его range.js

Шаг 5: Поместите этот код в этот файл js:

const puppeteer = require('puppeteer');
// Include to be able to export files w/ node
const fs = require('fs');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    // Begin collecting CSS coverage data
    await Promise.all([
        page.coverage.startCSSCoverage()
    ]);

    // Visit desired page
    await page.goto('https://www.google.com');
  
    //Stop collection and retrieve the coverage iterator
    const cssCoverage = await Promise.all([
        page.coverage.stopCSSCoverage(),
    ]);

    //Investigate CSS Coverage and Extract Used CSS
    const css_coverage = [...cssCoverage];
    let css_used_bytes = 0;
    let css_total_bytes = 0;
    let covered_css = "";
    
    for (const entry of css_coverage[0]) {
        
        css_total_bytes += entry.text.length;
        console.log(`Total Bytes for ${entry.url}: ${entry.text.length}`);

        for (const range of entry.ranges){
            css_used_bytes += range.end - range.start - 1;
            covered_css += entry.text.slice(range.start, range.end) + "\n";
        }       
    }

    console.log(`Total Bytes of CSS: ${css_total_bytes}`);
    console.log(`Used Bytes of CSS: ${css_used_bytes}`);
    fs.writeFile("./exported_css.css", covered_css, function(err) {
        if(err) {
            return console.log(err);
        }
        console.log("The file was saved!");
    }); 

    await browser.close();
})();

Шаг 6: ОБЯЗАТЕЛЬНО ЗАМЕНИТЕ URL на этом этапе в коде await page.goto('https://www.google.com'); на желаемый URL

Шаг 7: В командной строкеtool (Git Bash) тип node coverage.js

Будет создан файл с именем exported_css.css, который будет содержать весь CSS покрытия для URL-адреса, заданного вами в коде.

CAVEAT: Thisизвлечет CSS покрытия из ВСЕХ CSS-ресурсов, которые загружаются с заданного вами URL.Затем вам придется дополнительно оптимизировать этот CSS (не рассматривается в этом примере).

0 голосов
/ 19 февраля 2019

Открыть вкладку Chrome -> Проверить элемент (F12) -> Нажмите кнопку Escape enter image description here

...