-
Notifications
You must be signed in to change notification settings - Fork 8
Build system requirements #40
Copy link
Copy link
Open
Description
These are my requirements for any kind of build system we introduce:
- It must not add any significant complexity or overhead effort to development. Ideally it would reduce effort.
- Must support the ability to produce a build for a client (or other users) which includes only the parts of the code required, with their additional code changes also bundled. We would want a "global" build for the library, and then the ability to easily produce builds which are for specific purposes. There may be more than one "build" for the code in a single project.
- Must produce code which is functionally identical to what the developer wrote. It should not be necessary to modify working code to get the build system to produce working code.
- Must allow us to have one or more global namespaces declared. That is, at least
edgesandesbut also to allow clients to have global namespaces (e.g.doaj). It should not wrap the resulting built code in an IIFE, or if it does, the IIFE should produce a code module which is mounted on a global namespace, and reflects the structure of the written code. - Must be supported in the developer IDE (at least JetBrains)
- Must work well with SCSS/SASS/CSS or ignore it completely and let that be a separate concern
- The resulting code must inspect well in the browser. Objects should appear named as they appear in the source, and it should be trivial to map from the line of the source in the browser to the source file in the IDE. It should be possible to add breakpoints in the code as if it is the code in the IDE, and to debug line by line as if in the IDE.
- It must be able to handle swappable dependencies. For example, the ES library or the jquery library may need to be swapped for alternative versions either at run-time or build-time. That is
import esshould be able to accept thatesmay be one of a selection of possible libraries - It must be capable of producing multiple outputs. For example, if a client has a search page and a data viz page, this should be able to produce two (or more) packages which provide the specific functionality for each page, without bundling additional unrequired code. It may also be desireable to produce 3 outputs in this case: a common library, and then 2 page-specific libraries.
- It must support the new style node import syntax, and also accept the old style by-reference function calls. That is
import esas per node, or simply a call toes.doQuerywhereeswill be satisfied at run time in the browser. - Similar to 10, it must support libraries which are explicitly always externally referenced. For example, the google maps code retrieved with an API key at run-time.
- Transcoding to support older versions of the js runtime would be desireable.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels