Я уточню свой комментарий, который я написал раньше, (спасибо Александру Миллсу).
Я verdaccio
участник, поэтому я внимательно слежу за тем, кто реализует и как делать вердаччо. Я опишу пары или примеры (в основном e2e), которые я нашел и которые могут быть интересными или как правильный ответ.
создать реагирующее-приложение
Безусловно, самая популярная интеграция. Позвольте мне дать вам некоторый контекст, они используют lerna
и имеют несколько пакетов, которые необходимо протестировать, прежде чем публиковать в основном реестре (или npmjs
). Я процитирую здесь Дэн Абрамов объясняя причины использования реестра custon.
Сценарий не требует пояснений , но позвольте мне выделить некоторые его части.
+nohup npx verdaccio@2.7.2 &>$tmp_registry_log &
+# Wait for `verdaccio` to boot
+grep -q 'http address' <(tail -f $tmp_registry_log)
+
+# Set registry to local registry
+npm set registry http://localhost:4873
+yarn config set registry http://localhost:4873
+
+# Login so we can publish packages
+npx npm-cli-login@0.0.10 -u user -p password -e user@example.com -r http://localhost:4873 --quotes
# Test local start command
yarn start --smoke-test
+./tasks/release.sh --yes --force-publish=* --skip-git --cd-version=prerelease --exact --npm-tag=latest
Как вы видите, они запускают verdaccio
, и вместо пользовательского файла конфигурации они решили использовать npm-cli-login
, а затем они запускают тесты против verdaccio. Когда все готово, они публикуются на вердаччо. Как последний шаг, позже в том же файле они выбирают пакеты со своим собственным приложением.
pnpm
Они создали проект под названием pnpm-registry-mock , который является абстракцией, которая позволяет им запускать verdaccio перед запуском тестов.
"pretest:e2e": "rimraf ../.tmp/ && rimraf node_modules/.bin/pnpm && pnpm-registry-mock prepare",
"test:e2e": "preview --skip-prepublishOnly && npm-run-all -p -r pnpm-registry-mock test:tap",
"test": "npm run lint && npm run tsc && npm run test:e2e",
По сути, используя сценарии npm, они готовят вердаччо и запускают тест как последний шаг. Я не могу вдаваться в подробности, так как видел это лишь поверхностно. Но я знаю, что он делает.
Mozilla Neutrino
Это работа в процессе , но также интересно упомянуть здесь.
+if [ "$PROJECT" == "all" ]; then
+ yarn link:all;
+ yarn validate:eslintrc;
+ yarn lint;
+ yarn build;
+ yarn test;
+else
+ yarn verdaccio --config verdaccio.yml & sleep 10;
+ yarn config set registry "http://localhost:4873";
+ npm config set registry "http://localhost:4873";
+ .scripts/npm-adduser.js;
+ yarn lerna publish \
+ --force-publish=* \
+ --skip-git \
+ --skip-npm \
+ --registry http://localhost:4873/ \
+ --yes \
+ --repo-version $(node_modules/.bin/semver -i patch $(npm view neutrino version));
+ yarn lerna exec npm publish --registry http://localhost:4873/;
+ PROJECT="$PROJECT" TEST_RUNNER="$TEST_RUNNER" LINTER="$LINTER" yarn test:create-project;
+fi
Опять тот же подход, проект строится, а затем verdaccio
выполняется, и они публикуют все пакеты.
Babel.js
Я знаю, что Babel.js экспериментировал с тестированием дыма на Babel 6 и планирует интегрировать реестр с Babel 7 . Я цитата Генри Чжу в начале этого года говорит о babel-smoke-tests
в той же ветке create-react-app
.
Эксперимент называется babel-smoke-tests , а babel-smoke-tests/scripts/test.sh
- ключевой файл для вас.
Здесь я вижу ту же схему, что и другие проекты. Они запускают verdaccio
, а затем делают свое дело.
START=$(cd scripts; pwd)/section-start.sh
END=$(cd scripts; pwd)/section-end.sh
$START 'Setting up local npm registry' setup.npm.registry
node_modules/.bin/verdaccio -l localhost:4873 -c verdaccio.yml &
export NPM_CONFIG_REGISTRY=http://localhost:4873/
NPM_LOGIN=$(pwd)/scripts/npm-login.sh
$NPM_LOGIN
$END 'Done setting up local npm registry' setup.npm.registry
scripts/bootstrap.sh
export THEM=$(cd them; pwd)
if [[ $SPECIFIC_TEST ]]; then
scripts/tests/$SPECIFIC_TEST.sh
else
scripts/tests/jquery.sh
scripts/tests/react.sh
fi
Завершение
Прежде всего, я надеюсь, что мое небольшое исследование даст вам новые идеи, как решить вашу проблему. Я думаю, npm pack
решит некоторые проблемы, но насмешка над реестром с использованием verdaccio
, который довольно легок и понятен в использовании, может быть реальным вариантом для вас . Некоторые крупные проекты (или начинают) использовать его, и они используют более или менее тот же подход. Так почему бы не попробовать? :)
https://www.verdaccio.org/