Skip to main content

Simple tool to concatenate js files when changed.

Project description

Concat JS

PyPI - Version PyPI - Python Version


Table of Contents

Use case

This small app aim to provide automatic concatenation of javascript (or any other file) files. Typical use case is to combine sets of small js files and bundle then into one functionnal script for each «web page», and reduce the overhead of multiple web requests.

Installation

First of all install the app from PyPi

pip install django-concat-js

After installing the package, add concat_js in in your INSTALLED_APPS settings

INSTALLED_APPS = (
    ...
    'concat_js',
)

Settings

You need to configure the app before using it. It's done by adding a setting in your settings.py file

CONCAT_JS = {
    "JSON_DEPS": a Path to main JSON file,
    "CONCAT_ROOT": a Path,
    "CREATE_SOURCEMAPS": False,
    "LINT_COMMAND": False,
    "FILTER_EXTS": (".js", ),
    "LINT_BASE": False 
}

The main setting here is JSON_DEP which should point to a JSON file. It can be a Path or a string. This files contains a list of objects with following attributes

{
	"relative_to": "{BASE_DIR}/my_path/",
	"dest": "first_destination.js",
	"src": [
	    "src/first_source.js",
	    "src/second_source.js"
	]
}
  • relative_to is an optionnal string containing an absolute path to a directory. All other path in this object are considered relative to this directory. Defaults to CONCAT_ROOT (see below). You can use BASE_DIR (defined in django default settings.py file) or CONCAT_ROOT as format placeholder.
  • src is a list of relative path to files to be concatenated. The result is in....
  • dest is the relative path to the concatenated file.

If you want to, you can name each bundle and use the more verbose

[
	"my_wonderful_name",
	bundle_spec
]

where bundle_spec is an object described above.

Other settings

  • CONCAT_ROOT is a Path or string setting. See aboce for meaning. It defaults to BASE_DIR
  • CREATE_SOURCEMAP is a boolean, which defaults to False. If True, each bundling will also create a sourcemap file named {dest}.map
  • LINT_COMMAND must be False or a command string used to invoke a linter for each file before concatenation.
  • FILTER_EXTS is an iterable of extension strings which defaults to the tuple (".js", ). Only files with given extensions will be watched for changes.
  • LINT_BASE is either False (the default) or a path to a directory. Files in this directory will be linted just before watching for changes.

## Usage

Once configured, you can watch for changed files with

python manage.py watch_js

License

django-concat-js is distributed under the terms of the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_concat_js-0.3.0.tar.gz (15.5 kB view hashes)

Uploaded Source

Built Distribution

django_concat_js-0.3.0-py3-none-any.whl (18.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page