djblets.pipeline.settings¶
Utilities and constants for configuring Pipeline.
Note
This is safe to import from a project’s settings.py
without
side effects (for instance, it will not load any Django models or apps).
New in version 2.1.
- DEFAULT_PIPELINE_COMPILERS: List[str] = ['djblets.pipeline.compilers.es6.ES6Compiler', 'djblets.pipeline.compilers.typescript.TypeScriptCompiler', 'djblets.pipeline.compilers.less.LessCompiler']¶
Default list of compilers used by Djblets.
- build_pipeline_settings(*, pipeline_enabled: bool, node_modules_path: str, static_root: str, javascript_bundles: Dict = {}, stylesheet_bundles: Dict = {}, compilers: List[str] = ['djblets.pipeline.compilers.es6.ES6Compiler', 'djblets.pipeline.compilers.typescript.TypeScriptCompiler', 'djblets.pipeline.compilers.less.LessCompiler'], babel_extra_plugins: List[str] = [], babel_extra_args: List[str] = [], less_extra_args: List[str] = [], validate_paths: bool = True, use_rollup: bool = True, rollup_extra_args: List[str] = [], extra_config: Dict = {}) Dict ¶
Build a standard set of Pipeline settings.
This can be used to create a
PIPELINE
settings dictionary in asettings.py
file based on the standard Djblets Pipeline settings.By default, this makes use of Babel, LessCSS, and UglifyJS, along with a preset list of plugins.
The following base set of Babel plugins are used:
The following LessCSS plugin is used:
Optionally, rollup.js <https://www.rollupjs.org> can be used by setting
use_rollup=True
. This will make use ofdjblets.pipeline.rollup.RollupCompiler
, configuring it to automatically compile any of the following files:index.js
index.es6
,index.es6.js
index.ts
These modules can make use of modern JavaScript
import
/export
statements. Any relatively-imported modules will be rolled up during compilation for theindex
file.Note
These files should not be specified as part of the Pipeline bundle! Rollup will instead bundle them into the compiled index file.
As a convenience, this function will also set the value of
node_modules_path
in theNODE_PATH
environment variable.Changed in version 4.0:
Added support for rollup.js <https://www.rollupjs.org>.
Added
extra_config
,use_rollup`, and ``rollup_extra_args
parameters.
- Parameters:
pipeline_enabled (
bool
) –Whether Pipelining of static media should be enabled.
This must be provided by a caller. It’s recommended to enable this if
DEBUG
isFalse
(or, better, use another variable indicating a production vs. development environment).node_modules_path (
unicode
) – The path to the loalnode_modules
directory for the project.static_root (
unicode
) – The value of thesettings.STATIC_ROOT
. This must be provided explicitly, sincesettings.py
is likely the module calling this.javascript_bundles (
list
ofdict
, optional) – A list of JavaScript bundle packages for Pipeline to handle.stylesheet_bundles (
list
ofdict
, optional) – A list of stylesheet bundle packages for Pipeline to handle.compilers (
list
ofunicode
, optional) – A list of compilers to use for static media.babel_extra_plugins (
list
ofunicode
, optional) – A list of additional Babel plugins to enable.babel_extra_args (
list
ofunicode
, optional) – Extra command line arguments to pass to Babel.less_extra_args (
list
ofunicode
, optional) – Extra command line arguments to pass to LessCSS.validate_paths (
bool
, optional) –Whether to validate any expected paths to binary files.
It’s recommended to set this based on
DEBUG
, or another variable indicating a production vs. development environment.If the
DJBLETS_SKIP_PIPELINE_VALIDATION
environment variable is set to1
, then this will be forced toFalse
. This is primarily used for packaging building.