How to add conflicts in D8 info.yml?
It seems that this is not implemented yet. Related issue is here.

An alternative would be to use hook_requirements() in your module's .install file. You can check here if the conflicting module is present during the installation process and prevent the system from installing the module.

Here's example code that would go in your module's .install file:

/**
 * Implements hook_requirements().
 */
function YOUR_MODULE_requirements($phase) {
  $requirements = [];

  switch ($phase) {
    // Called while the module is installed.
    case 'install':
    // Called during regular use of the website.
    case 'runtime':
    // Called while the update.php is being executed.
    case 'update':
      // Do not allow administrators to install the module if conflicting module
      // is already installed.
      //
      // You can move this code to any other phase as well.
      if (\Drupal::moduleHandler()-&gt;moduleExists('ARCH_ENEMY_OF_YOUR_MODULE')) {
        $requirements[] = [
          'title' =&gt; t('Name of your module'),
          'value' =&gt; t('Arch enemy module'),
          'description' =&gt; t('Explain that administrators need to uninstall the module before proceeding.'),
          'severity' =&gt; REQUIREMENT_ERROR,
        ];
      }
      break;
  }

  return $requirements;
}


You can see a working example of hook_requirements() in my Drupal 8 boilerplate repo on Github.

Hope this helps.