1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-core-js

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
CONTRIBUTING.md 15 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 24.05.2025 15:36 8c54610

Участие

Вклады всегда приветствуются. Не стесняйтесь обратиться к @zloirock, если у вас есть вопросы.

Я хочу помочь с кодом, но не знаю, как это сделать

Всегда есть какие-то "помощь требуемые" задачи. Вы можете сначала посмотреть на них. Конечно, требуются и другие виды помощи — вы можете обратиться к @zloirock по этому поводу или открыть задачи, если у вас есть какие-то идеи.

Перевод исправленных фраз:

  • "помощь требуемые" -> "требующие помощи"## Как добавить новый полифилл
  • Реализация полифилла должна быть добавлена в директорию packages/core-js/modules.
  • Полифилл должен корректно работать в ES3 и всех возможных движках. Если в некоторых движках его нельзя реализовать (например, он строго требует более современной ES или недоступных платформенных функций), он не должен нарушать работу других функций core-js или приложений никаким образом.
  • Избегайте возможных проблем с наблюдением / нарушением полифиллов путем патчирования встроенных объектов в реальном времени: кэшируйте все глобальные встроенные объекты в коде полифиллов и не вызывайте методы прототипа из экземпляров.
  • Общие вспомогательные функции должны быть добавлены в директорию packages/core-js/internals. Используйте уже существующие вспомогательные функции.
  • Избегайте прямого импорта из пути /modules/ в /internals|modules/, так как это нарушит оптимизации через Babel / swc. Указывайте такие зависимости в записях /es|stable|actual/full/ и используйте что-то вроде вспомогательной функции internals/get-built-in.
  • Для экспорта полифилла в большинстве случаев используйте вспомогательную функцию internals/export. Используйте что-то другое только если эта вспомогательная функция не применима - например, если вы хотите полифилловать доступные свойства.- Если код реализации чистой версии значительно отличается от глобальной версии (что нечастое явление, в большинстве случаев достаточно константы internals/is-pure), добавьте его в директорию packages/core-js-pure/override. Оставшиеся части core-js-pure будут скопированы из пакета core-js.
  • Добавьте обнаружение функций полифилла в файл tests/compat/tests.js, добавьте данные совместимости в файл packages/core-js-compat/src/data.mjs, как это сделать см. ниже, и имя модуля полифилла в файл packages/core-js-compat/src/modules-by-versions.mjs (эти данные также используются для получения списка полифиллов по умолчанию при упаковке и генерации индексов).
  • Добавьте его в точки входа, где это необходимо: директории packages/core-js/es, packages/core-js/stable, packages/core-js/actual, packages/core-js/full, packages/core-js/proposals, packages/core-js/stage и packages/core-js/web.

Как обновить данные core-js-compatДля обновления данных core-js-compat:

  • Если вы хотите добавить новые данные для браузера, запустите tests/compat/index.html в этом браузере (тесты и результаты для текущего выпуска доступны по адресу http://zloirock.github.io/core-js/compat/). Вы увидите, какие модули core-js необходимы для этого браузера.

таблица-совместимости- Если вы хотите добавить новые данные для NodeJS, запустите npm run compat-node с установленной требуемой версией NodeJS, и вы увидите результаты в консоли. Используйте npm run compat-node json, если вы хотите получить результат в формате JSON.

  • Если вы хотите добавить новые данные для Deno, запустите npm run compat-deno с установленной требуемой версией Deno, и вы увидите результаты в консоли. Используйте npm run compat-deno json, если вы хотите получить результат в формате JSON.
  • Если вы хотите добавить новые данные для Bun, запустите npm run compat-bun с установленной требуемой версией Bun, и вы увидите результаты в консоли.
  • Если вы хотите добавить новые данные для Rhino, установите требуемую версию Rhino в скрипте NPM compat-rhino в файле package.json, запустите npm run compat-rhino, и вы увидите результаты в консоли.
  • Если вы хотите добавить новые данные для Hermes (включая версии, поставляемые с React Native), запустите npm run compat-hermes YOUR_PATH_TO_HERMES, и вы увидите результаты в консоли.
  • После получения этих данных добавьте их в файл packages/core-js-compat/src/data.mjs.
  • Если вы хотите добавить новые отображения (например, чтобы добавить новую версию iOS Safari на основе Safari или NodeJS на основе Chrome), добавьте их в файл packages/core-js-compat/src/mapping.mjs.

| engine | как запустить тесты | базовые данные наследуются от | обязательная проверка | отображение для новой версии | |--------------------|---------------------|--------------------------------|-----------------------|------------------------------|--- | --- | --- | --- | --- android | browser runner | chrome, chrome-android | | bun | bun runner | safari (только ES) | обязательна | chrome | browser runner | | обязательна | chrome-android | browser runner | chrome | | deno | deno runner | chrome (только ES) | non-ES функции | обязательна edge | browser runner | ie, chrome | обязательна (<= Yöntem 18) | electron | browser runner | chrome | | обязательна firefox | browser runner | | обязательна | firefox-android | browser runner | firefox | | hermes | hermes runner | | обязательна | ie | browser runner | | обязательна | ios | browser runner | safari | | если несогласовано (! = safari) node | node runner | chrome (только ES) | non-ES функции | обязательна opera | browser runner | chrome | | если несогласовано (! = chrome - 14) opera-android | browser runner | opera, chrome-android | | обязательна phantom | browser runner | safari | | quest | browser runner | chrome-android | | обязательна react-native | hermes runner | hermes | обязательна | rhino | rhino runner | | обязательна | safari | browser runner | | обязательна |samsung | browser runner | chrome-android | | обязательнаяЕсли у вас нет доступа ко всем необходимым браузерам / версиям браузеров, используйте Sauce Labs, BrowserStack или Cloud Browser.## Стиль и стандарты

Стиль написания кода должен соответствовать нашему eslint.config.js. Вы можете проверить его, вызвав npm run lint. В разных местах используются разные синтаксис и ограничения стандартной библиотеки:

  • Реализации полифиллов должны использовать только синтаксис ES3 и стандартную библиотеку, они не должны использовать другие полифиллы из глобальной области видимости.
  • Единичные тесты должны использовать современный синтаксис с нашим минимальным конфигурационным файлом Babel. Единичные тесты для чистой версии не должны использовать никакие современные функции стандартной библиотеки.
  • Инструменты, скрипты и тесты, выполняемые в NodeJS, должны использовать только синтаксис и стандартную библиотеку, доступные в NodeJS 8.

Имена файлов должны быть в формате kebab-case. Имена модулей полифиллов должны соответствовать правилу названия namespace.subnamespace-where-required.feature-name, например, esnext.set.intersection. Верхнеуровневое пространство имен должно быть es для стабильных функций ECMAScript, esnext для предложений ECMAScript и web для других стандартов веба.## Тестирование

Перед тестированием вы должны установить зависимости:

npm i

Вы можете запустить основные тесты:

npm t

Вы можете запускать части тестового случая отдельно:

  • Линтинг:
    npm run lint
  • Единичные тесты в Karma (современный Chromium, Firefox, WebKit (Playwright), древний WebKit (PhantomJS), IE11 (если доступно)):
    npx run-s prepare bundle test-unit-karma
  • Единичные тесты в NodeJS:
    npx run-s prepare bundle test-unit-node
  • Единичные тесты в Bun:
    npx run-s prepare bundle test-unit-bun
  • Тестовый случай Test262 (не включен в стандартные тесты):
    npx run-s prepare bundle-package test262
  • Тестовые случаи Promises/A+ и ES6 Promise:
    npx run-s prepare test-promises
  • Тестовый случай ECMAScript Observable:
    npx run-s prepare test-observables
  • Тестовый случай CommonJS точек входа:
    npx run-s prepare test-entries
  • Тестовый случай инструментов core-js-compat:
    npx run-s prepare test-compat-tools
  • Тестовый случай core-js-builder:
    npx run-s prepare test-builder
  • Если вы хотите запустить тесты в определённом браузере, сначала вам нужно собрать пакеты и тестовые пакеты:
    npx run-s prepare bundle
  • Для запуска глобальной версии единичных тестов используйте этот файл:
    tests/unit-browser/global.html
  • Для запуска чистой версии единичных тестов используйте этот файл:
    tests/unit-browser/pure.html

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/mirrors-core-js.git
git@api.gitlife.ru:oschina-mirror/mirrors-core-js.git
oschina-mirror
mirrors-core-js
mirrors-core-js
master