Add support for installing dependencies during extension packaging.

Review Request #8483 — Created Oct. 24, 2016 and submitted

Information

Djblets
release-0.9.x
28722d3...

Reviewers

The extension static media packaging code attempts to install
dependencies needed for the pipelining process. If *.less files are
provided, it will install LessCSS. If *.js files are provided, it will
install UglifyJS.

This solves one of the more annoying issues with extension packaging,
which is getting the right versions of the right dependencies going.

Subclasses can also augment the installation behavior by overriding
install_pipeline_deps().

Tested building an extension without having lessc or uglifyjs in
my path, and with a clean source tree. Verified the generated output
in the packages.

Tested with and without having npm in the path. Saw an error when it
wasn't found.

Tested the case of npm install ... failing.

Description From Last Updated

Won't npm create this?

daviddavid
reviewbot
  1. Tool: PEP8 Style Checker
    Processed Files:
        djblets/extensions/packaging.py
    
    
    
    Tool: Pyflakes
    Processed Files:
        djblets/extensions/packaging.py
    
    
  2. 
      
david
  1. 
      
  2. djblets/extensions/packaging.py (Diff revision 1)
     
     
     
    Show all issues

    Won't npm create this?

    1. One would think. Turns out if you don't have a package.json, it doesn't seem to want to do this. Instead, it walks up the tree and tries to find a place to put it. For me, it found a ~/node_modules, and put it there instead. By forcing the existence of this directory, we can force it to install in the correct location.

  3. 
      
david
  1. Ship It!
  2. 
      
chipx86
Review request changed
Status:
Completed
Change Summary:
Pushed to release-0.9.x (db2579a)