75 lines
2.4 KiB
Plaintext
75 lines
2.4 KiB
Plaintext
==================================
|
|
MERC 3: Using JavaScript libraries
|
|
==================================
|
|
|
|
:MERC: 3
|
|
:Author: Eric Riggs
|
|
:Status: Accepted
|
|
:Type: Feature
|
|
:Created: 2018-03-08
|
|
:Last-Modified: 2018-06-04
|
|
|
|
.. contents:: Table of Contents
|
|
:depth: 3
|
|
:local:
|
|
|
|
|
|
Abstract
|
|
========
|
|
|
|
This MERC proposes a standard way to use JavaScript libraries.
|
|
|
|
Rationale
|
|
=========
|
|
|
|
Mayan EDMS uses several JavaScript libraries for user interface features.
|
|
Currently, the libraries are not installed using any JavaScript package
|
|
manager but copied uncompressed. Installing the libraries in this manner
|
|
carries some disadvantages.
|
|
|
|
Motivation
|
|
==========
|
|
|
|
The inclusion of the libraries in source form is required by many licenses
|
|
if the library is not installed by a package manager in distributable form.
|
|
There are several disadvantages with the current approach:
|
|
|
|
1. Having the library in source form means that the entire weight of the
|
|
library's size carries over the overall size of the Mayan EDMS distribution files.
|
|
The justification for not doing this is the same as with the Python libraries
|
|
which are not copied with the code but downloaded upon installation.
|
|
2. Upgrading the libraries means manually examining the version of the
|
|
installed in the project and manually searching, downloading, compressing
|
|
and adding the files to the repository.
|
|
3. The source form of the libraries includes normal and minified versions
|
|
of the code and the accompanying CSS files. There is no define preference
|
|
and through the project both versions of the libraries are loaded
|
|
interchangeably. Using a packager manager the minified version would be
|
|
used of a pipeline to minify the installed libraries should be added.
|
|
|
|
Backwards Compatibility
|
|
=======================
|
|
|
|
There are no backwards compatibility issues with this proposal.
|
|
|
|
|
|
Specification
|
|
=============
|
|
|
|
Changes needed:
|
|
|
|
1. Python based JavaScript package manager. Alternatively a Python wrapper
|
|
for a JavaScript package manager could be used.
|
|
2. Package manifest for the JavaScript libraries used.
|
|
3. Installation pipeline to install the JavaScript libraries during the
|
|
installation and setup of the project.
|
|
|
|
References:
|
|
|
|
- https://github.com/JDeuce/powser
|
|
- https://github.com/javrasya/version-manager
|
|
- https://github.com/inveniosoftware-attic/setuptools-bower
|
|
- https://pypi.python.org/pypi/django-bower-cache/0.5.0
|
|
- http://django-pipeline.readthedocs.io/en/latest/index.html
|
|
- https://github.com/nvbn/django-bower
|