Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.mellowtel.com/llms.txt

Use this file to discover all available pages before exploring further.

Эта функция требует Mellowtel версии 1.6.2 или выше. Это является несовместимым изменением по сравнению с предыдущими версиями.
Mellowtel предоставляет дополнительную функцию, которая позволяет обрабатывать больше запросов и, следовательно, зарабатывать больше. Эта функция называется “Meucci”.

Установка

Сначала установите необходимый пакет npm, используя предпочитаемый менеджер пакетов:

Используя npm

npm install @mellowtel/module-meucci

Используя yarn

yarn add @mellowtel/module-meucci

Используя pnpm

pnpm add @mellowtel/module-meucci
Ниже приведены инструкции по включению функции Meucci в вашем плагине для браузера, с вариантами как для стандартной, так и для реализации с использованием фреймворка Plasmo.

Стандартная реализация

1. Создайте JavaScript файл с именем meucci.js

В каталоге src, или где у вас находятся js файлы, создайте файл с именем meucci.js и добавьте следующий код. Убедитесь, что этот файл включен в вашу финальную сборку (/dist). Если вы следовали начальному настройке webpack, вы можете просто добавить этот файл в объект entry в вашей конфигурации webpack.
import ModuleMeucci from "@mellowtel/module-meucci";

let moduleMeucci;

(async () => {
    moduleMeucci = new ModuleMeucci();
    await moduleMeucci.init();
})();

2. Обновите вашу конфигурацию webpack

Убедитесь, что ваша финальная сборка включает файл meucci.js. Если вы следовали начальному настройке webpack, вы можете просто добавить этот файл в объект entry в вашей конфигурации webpack.
module.exports = {
    // ...
    entry: {
        // background: path.join(__dirname, 'src', 'background.js'),
        // popup: path.join(__dirname, 'src', 'popup.js'),
        // content_script: path.join(__dirname, 'src', 'content_script.js'), ...
        // pascoli: path.join(__dirname, 'src', 'pascoli.js'),
        meucci: path.join(__dirname, 'src', 'meucci.js'),
        // ...
    },
    // ...
}

3. Обновите manifest.json

Добавьте файл meucci.js в ваш manifest.json как web_accessible_resources:
{
  "web_accessible_resources": [
    {
      "resources": [
        "meucci.js"
      ],
      "matches": [ "<all_urls>" ]
    }
  ]
}

Реализация с использованием фреймворка Plasmo

Если вы используете фреймворк Plasmo, следуйте этим альтернативным шагам:

1. Создайте TypeScript файл с именем meucci.ts

В каталоге src, или где у вас находятся ts файлы, создайте файл с именем meucci.ts и добавьте следующий код:
import ModuleMeucci from "@mellowtel/module-meucci";

let moduleMeucci;

(async () => {
    moduleMeucci = new ModuleMeucci();
    await moduleMeucci.init();
})();

2. Создайте скрипт сборки

Создайте файл build-meucci.js в корне вашего проекта со следующим содержимым:
const esbuild = require('esbuild')
const fs = require('fs')
const path = require('path')

// Функция для ожидания существования директории
const waitForDirectory = async (dir, timeout = 10000) => {
  const start = Date.now()
  while (!fs.existsSync(dir)) {
    if (Date.now() - start > timeout) {
      throw new Error(`Timeout waiting for directory: ${dir}`)
    }
    await new Promise(resolve => setTimeout(resolve, 100))
  }
}

// Создайте функцию сборки
async function buildMeucci() {
  // Соберите пакет
  await esbuild.build({
    entryPoints: ['src/meucci.ts'], // TODO: ЗАМЕНИТЕ на путь к вашему файлу meucci.ts
    bundle: true,
    outfile: 'meucci.bundled.js',
    platform: 'browser',
    format: 'iife',
    minify: true,
    target: ['es2020'],
    define: {
      'process.env.NODE_ENV': '"production"'
    }
  })

  // Прочитайте собранный файл
  const bundledContent = fs.readFileSync('meucci.bundled.js', 'utf8')

  // Скопируйте в dev и prod директории
  const directories = [ 
    'build/chrome-mv3-dev',
    'build/chrome-mv3-prod',
    'build/firefox-mv2-dev',
    'build/firefox-mv2-prod',
    'build/safari-mv2-dev',
    'build/safari-mv2-prod',
    'build/opera-mv3-dev',
    'build/opera-mv3-prod'
  ] // TODO: ЗАМЕНИТЕ на пути к вашим dev и prod директориям

  // Обработайте все директории одновременно
  await Promise.all(directories.map(async (dir) => {
    try {
      console.log(`Ожидание директории: ${dir}`)
      await waitForDirectory(dir)
      // Запишите собранный файл
      fs.writeFileSync(path.join(dir, 'meucci.js'), bundledContent)
      console.log(`Добавлен meucci.js в ${dir}`)
    } catch (err) {
      console.log(`Пропуск ${dir} - ${err.message}`)
    }
  }))

  // Удалите временный файл
  fs.unlinkSync('meucci.bundled.js')
}

buildMeucci().catch(err => {
  console.error(err)
  process.exit(1)
})

3. Обновите package.json

Добавьте следующее в ваш файл package.json:
{
  "scripts": {
    "build:meucci": "node build-meucci.js"
  },
  "web_accessible_resources": [
    {
      "resources": [
        "meucci.js"
      ],
      "matches": [ "<all_urls>" ]
    }
  ]
}
Вы можете либо:
  1. Запустить скрипт сборки вручную после вашей основной сборки: npm run build:meucci
  2. Или добавить его к вашему существующему скрипту сборки с помощью &: "build": "your-existing-build-command & npm run build:meucci"
Это обеспечит правильную сборку и копирование файла Meucci во все директории сборки в правильной структуре Plasmo.

Обновите initContentScript

Для обеих реализаций измените ваш метод initContentScript в контент-скрипте, чтобы включить правильный путь к файлу Meucci:
// Для стандартной реализации
await initContentScript({
    meucciFilePath: "meucci.js"
});
Для фреймворка Plasmo, вы можете использовать следующее:
// Для фреймворка Plasmo
await initContentScript({
    meucciFilePath: "meucci.js"
});
Если у вас также включен Pascoli, вы можете использовать следующее:
await initContentScript({
    pascoliFilePath: "pascoli.html", // или "tabs/pascoli.html", если используете фреймворк Plasmo
    meucciFilePath: "meucci.js"
});