Estoy escribiendo un editor de texto de programador (sí, otro) en Perl llamado Kephra, que también es un módulo de CPAN por supuesto y se incluye con Module::Install. Recientemente vi que Module::Build ha entrado en el núcleo, por lo que si cambio podría reducir las dependencias. ¿Hay alguna otra razón para cambiar?¿Debo usar Module :: Install o Module :: Build?
Respuesta
El bolo alimenticio ya que han masticado un poco en esto antes en "Which framework should I use to write modules?"
Después de escupir el bolo alimenticio que decidí ir con Module::Build pero claramente diferentes respuestas son posibles! (Aunque he sido feliz con M :: B hasta ahora).
Bueno, Module::Build
es un módulo bastante bueno, se supone que es un reemplazo de ExtUtils::MakeMaker
, es decir, reemplaza el Makefile.PL por un Build.PL, que genera una compilación en lugar de un archivo Makefile. También se entiende como "las cosas simples deberían ser simples, las cosas difíciles deberían ser posibles".
Module::Install
toma un enfoque diferente y genera un archivo Makefile.
Además, no hay que olvidar que no todo el mundo se ejecuta la versión más reciente de todo :-)
No recuerdo ninguna comparación de los módulos, pero creo que se podría encontrar algunas cosas de Module::Build
y Module::Install
respectivas páginas de copias.
gracias, creo que MB funciona sin hacer las uñas por mí –
Utilizamos Module::Build en nuestro grupo.
La razón principal es Easy Extensibility.
Module :: Build le permite hacer más con su proceso de construcción en Perl pura a través de subclases. Si desea hacer más usando Module::Install, debe tener conocimiento de cómo funcionan los Makefiles, AFAIK. Como presumiblemente ya conoces a Perl, esto puede ser una ventaja.
Como dijo, el uso de Module :: Build elimina la dependencia de un programa externo make
, que puede verse como algo bueno.
Sin embargo, los principales inconvenientes que se me ocurren son:
- Aunque módulo :: Build ha golpeado núcleo, no todo el mundo va a utilizar una versión actualizada de Perl. Para usuarios con versiones anteriores del núcleo, creará una nueva dependencia.
- Muchos veteranos (no necesariamente personas de Perl) están acostumbrados al paradigma
perl Makemaker.PL; make; make install
, y en su lugar pueden ser expulsados teniendoBuild.PL
. Espero que esto no sea un gran problema. - Module :: Build ocasionalmente ha roto nuestras compilaciones cuando su funcionalidad ha cambiado porque la documentación no cubría un caso extremo que estábamos usando. El borde de la caja se modificó y documentó, pero tuvimos que volver a codificar nuestra subclase para que nuestra construcción funcione nuevamente (esto nos sucedió en la actualización reciente de 0.2808 a 0.3).
Todo lo dicho, sin embargo, todavía recomiendo Module :: Build simplemente por la extensibilidad. Si eso no es un problema para usted, es mejor que se quede con Module :: Install.
- 1. Nginx instalado con passenger-install-nginx-module. ¿Cómo desinstalo?
- 2. Power shell: Import-Module
- 3. cómo isinstance (x, module)?
- 4. Drupal get module info?
- 5. Drupal Site Map Module
- 6. multi-module maven project
- 7. .NET Module vs Assembly
- 8. Powershell Unload Module ... completamente
- 9. Python SSH/SFTP Module?
- 10. zlib module missing
- 11. Class.superclass = Module, Module.class = ¿Clase?
- 12. ruby module_function vs including module
- 13. OCaml Module: incluir AND open?
- 14. jugar! framework 2.0 crud module
- 15. CMake module for gettext support?
- 16. Zend Framework Module error handling
- 17. Ruby Module Método de acceso
- 18. swig no module named _example
- 19. Google Api Auth Http Module Error
- 20. Play Framework como SBT Non-Root Module
- 21. UrlRewriting.Net Module + IIS7 Igual a Page.User == null?
- 22. Para escribir o no escribir `module Main where` en Haskell
- 23. Proyectos Eclipse + Maven + Git + Multi-Module = Infelicidad
- 24. ImportError: No Module named bs4 (BeautifulSoup)
- 25. apache proxy module gives 403 prohibido error
- 26. Python's re module - ¿estado de guardado?
- 27. Android NDK import-module/reuse de código
- 28. Load requireJS module inline the HTML body?
- 29. ¿Cómo puedo garantizar que los archivos sin extensiones estén instalados usando Module :: Build?
- 30. ruby module as collection of methods
gracias, fue interesante –
no es la respuesta más grande, pero se relaciona con exactamente lo que quería –