florian-lefebvre / astro-integration-kit

A package that contains utilities to help you build Astro integrations.
https://astro-integration-kit.netlify.app
MIT License
46 stars 8 forks source link

feat: add `hasVitePlugin` and warn for duplicated Vite plugins #74

Closed BryceRussell closed 4 months ago

BryceRussell commented 4 months ago

Closes #51

hasVitePlugin("vite-plugin-test-integration")
hasVitePlugin(vitePlugin())

Limitations

Todo

netlify[bot] commented 4 months ago

Deploy Preview for astro-integration-kit ready!

Name Link
Latest commit fb3f5c3a62508dda8bb9fa7f649d22f7a5e8155f
Latest deploy log https://app.netlify.com/sites/astro-integration-kit/deploys/65eb13fe251f2b000756bc1b
Deploy Preview https://deploy-preview-74--astro-integration-kit.netlify.app
Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

florian-lefebvre commented 4 months ago

Feel free to assign us as reviewers once you feel like the PR is ready!

BryceRussell commented 4 months ago

I am ready for a review on this, I plan on finishing the docs once all of the changes have been reviewed/finalized

What changed?

The use and creation of Vite plugins is a lot safer now with warnings and incrementing names

Added hasVitePlugin utility/plugin:

// Utility
hasVitePlugin({ plugin: "vite-plugin-test-integration", config })
hasVitePlugin({ plugin: vitePlugin(), config })

// Plugin
hasVitePlugin("vite-plugin-test-integration")
hasVitePlugin(vitePlugin())

Limitations

Updated addVitePlugin:

// Add `config` and `logger` to warn about duplicate plugins
addVitePlugin({
  plugin,
  config,
  logger
  updateConfig
})

// or

// Add `warnDuplicate: false` to disable warnings for duplicate plugins
addVitePlugin({
  warnDuplicate: false,
  plugin,
  updateConfig
})

// Add `warnDuplicate: false` AND `config` to increment plugin name if plugin already exists
// (for utils that depend on `addVitePlugin` so they don't need `logger` or `warnDuplicate` properties)
addVitePlugin({
  warnDuplicate: false,
  plugin,
  config
  updateConfig
})

Updated params for addVirtualImports and addDevToolbarFrameworkAppPlugin utils

// Now needs 'config' param to detect duplicate plugins and increment plugin name
addVirtualImports({
  ...
  config
})

// Now needs 'config' param to detect duplicate plugins and increment plugin name
addDevToolbarFrameworkAppPlugin({
  ...
  config
})

Thanks!

Let me know how this looks, and what can be improved

florian-lefebvre commented 4 months ago

You have a few conflicts to resolve because of me @BryceRussell!