Вы действительно понимаете, что такое `npm publish`?

NPM

Некоторые люди скажут:publishМодульный пакет, что в нем сложного? непосредственныйnpm publishРазве это не будет хорошо?

На самом деле, в противном случае у нас все равно будут следующие проблемы:

  • Юнит-тесты прошли?
  • Как отправить тестовые пакеты?
  • Могу ли я пометить его после публикации?

существуетgithubесть пакетnp, который, кажется, решает вышеуказанную проблему.

alt

В какой-то степени это действительно возможно.

Первый вопрос

согласно сnpПроцесс заключения контракта должен быть представлен в первую очередьcommit, но иногда мы просто говорим, что хотим отправить тестовую посылку другим друзьям, потому что мы не знаем, правильно ли это, поэтому нам не очень хочется сначалаcommit.

Итак, мы должны достичь--no-gitфункция, т.е. когда есть этоargs, вы можете обойтиnpПредставлена ​​спецификация пакета.

Тем не менее, вот предложение, котороеscriptsПоместите внутрь две команды:

{
   "scripts": {
       "pub:test": "np --no-git",
       "pub": "np"
   }
}

В волосах测试包, используйте приведенную выше команду. Отправить正式版本когда используешьpubЗаказ.

второй вопрос

После выбора (подтверждения) номера версии,npбудуpackage.jsonизversionизменить и отправитьcommit, генерировать локальныеtag.

Эта проблема вызовет, отправьте测试包, в конечном итоге сгенерирует тег, и естьcommitОтправьте запись.

Так что же вызвало это? Я долго искал и наконец нашел罪魁祸首, сначала я не мог в это поверить:

alt

Да, вы не ошиблись:

yarn version --version 版本号

Просто сделайте следующее:

  • git add
  • git commit
  • git tag

третий вопрос

Обычно мы делаем каноническую точку组件包, буду использоватьcommitizen.

Конечно, но и с.commitlintrcРегулировать и сдерживать нашcommit message.

Итак, возникает вопрос:

  • как изменитьyarn version --verion 版本号изcommit message
  • опубликованоtypeКак лучше назвать?

Я лично даю это.typeзначениеpublish. Затем мы искали документацию и нашлиyarnПредусмотрены аналогичные команды: (npm также можно найти, проверив документацию)

yarn config set version-git-message "v%s"

четвертый вопрос

как охранятьnpm publishкоманда, то есть под текущим пакетом модулей отключитьnpm publish, используйте вместоyarn pubдля публикации пакета модуля.

существуетantd-toolsНа самом деле естьguardКоманда, мы можем просто посмотреть на исходный код, чтобы было понятно, ядром является это предложение:

alt

После прочтения исходного кода, если вы действительно хотите отправить пакет, вы также можете передать:

npm publish --with-antd-tools

отnpС точки зрения--with-antd-toolsидентификация.

Пятый вопрос

Это расширение четвертого вопроса, обычно четвертого вопроса.守护Если да, то вот как:

{
    "scripts": {
      "prepublish": "antd-tools run guard",
      "prepare": "antd-tools run guard",
      "prepublishOnly": "antd-tools run guard",
    }
}

если мы хотимpublishвыполнено доbuildилиcompileИли выполнить другие команды, где их разместить?

Конечно, вы можете выбратьprepublishOnlyкоманда, через&&связанных с опекой.

antd-toolsделается черезpre-publishкоманда, в инструменте,publishПри выполнении сначала запускаетсяpre-publish.

Таким образом, мы действительно можем рассмотреть вопрос о размещенииnpИди в этом мешке. Конечно, время выполненияtestПосле этого, посколькуtestне пройдено, выполнитьbuildИли что-то еще, лично мне это не имеет особого смысла.

Шестой вопрос

Это конец? Нет-нет-нет, это всего лишь обычный выпуск компонента.

В некоторых случаях нам нужно использоватьlernaсоздать несколькоpackages.

Так что вопрос в том, как сохранитьtags, так как отправка по умолчаниюtagsТакова, что:

alt

Я пытался получить отcreate-react-appНайдите их программы на:

alt

Хорошо, тогда нам нужно настроить следующие параметры:

alt

Эпилог

Размышляя над приведенными выше шестью вопросами, мы можем понятьpublishОн содержит много, много вещей.

Некоторые ямы, если мы не наступим на них, никогда не узнаем, что в них.