bootstrap icon indicating copy to clipboard operation
bootstrap copied to clipboard

Add autoconfiguration of Nette Extensions

Open jelen07 opened this issue 6 years ago • 2 comments

I'm not sure if this is the right repostiory for an issue like this, if not I'm sorry in advance.

:bulb: The idea

It would be really helpful if the developer could enable extension simply by

$ composer require 68publishers/application # or any other Nette extension

and some mechanism will do other manual work automatically. Like

  • register the extension
  • add default configuration if necessary
  • update package.json if the extension has some frontend dependency
  • add or run schema migrations if needed
  • register styles and JS if available
  • show some notice
  • composer remove action
  • composer update
  • and so on

To achieve something like that, it would be necessary to create some recommendations (best practices) for extension structure, project configuration and so on.

There're at least three important questions

  1. How to implement this - should it be the Composer extension or something else?
  2. Where should be stored configuration files - within the extension or in some other repository?
  3. What types of "actions" should be implemented? (see the previous list)

Any hints?

jelen07 avatar Nov 19 '19 16:11 jelen07

Now I think it can be solved by Package Manager (not the official solution).

janbarasek avatar Sep 28 '20 17:09 janbarasek

I am working on orisai/installer which solves that just by running composer require/update

Currently is implemented registration of config files from vendor and their sorting based on composer dependencies.

I will also add interactive upgrade scripts in case package has some required configuration.

However I think handling assets is out-of-scope as there are many possible solutions. I will probably soon implement extension for handling assets without requiring build tool like Vite/Webpack. It may be used as an optional dependency by installer using packages for zero config assets.

Running migrations is completely out of scope as it is practically just adding folder with migrations in vendor config and running single command in the app. Copying to app and running from there (so they can be edited) is more of a migration tool job.

mabar avatar Feb 07 '23 22:02 mabar