From 2c8d29513276ebe7ff5128b25dd018a786da97ed Mon Sep 17 00:00:00 2001 From: Leigh Johnson Date: Wed, 26 Oct 2016 16:51:39 -0400 Subject: [PATCH] UI Build System - new interface Use `make ui-devel` to build a development/debug version of the UI, with source maps, without raising any additional browser-sync or filesystem polling. --- Makefile | 6 +++++- awx/ui/Gruntfile.js | 13 +++++++++++-- awx/ui/grunt-tasks/concurrent.js | 4 ++++ awx/ui/package.json | 5 +++-- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index a9df006bc4..a4b38e1cf6 100644 --- a/Makefile +++ b/Makefile @@ -184,7 +184,7 @@ UI_RELEASE_FLAG_FILE = awx/ui/.release_built deb deb-src debian debsign pbuilder reprepro setup_tarball \ virtualbox-ovf virtualbox-centos-7 virtualbox-centos-6 \ clean-bundle setup_bundle_tarball \ - ui-docker-machine ui-docker ui-release \ + ui-docker-machine ui-docker ui-release ui-devel \ ui-test ui-deps ui-test-ci ui-test-saucelabs jlaska @@ -555,6 +555,10 @@ ui-docker-machine: $(UI_DEPS_FLAG_FILE) ui-docker: $(UI_DEPS_FLAG_FILE) $(NPM_BIN) --prefix awx/ui run build-docker-cid +# Builds UI with development/debug settings enabled. Does not raise browser-sync or filesystem polling. +ui-devel: $(UI_DEPS_FLAG_FILE) + $(NPM_BIN) --prefix awx/ui run build-devel + ui-release: $(UI_RELEASE_FLAG_FILE) # todo: include languages target when .po deliverables are added to source control diff --git a/awx/ui/Gruntfile.js b/awx/ui/Gruntfile.js index 16b61f0405..a118409568 100644 --- a/awx/ui/Gruntfile.js +++ b/awx/ui/Gruntfile.js @@ -21,12 +21,21 @@ module.exports = function(grunt) { // writes environment variables for development. current manages: // browser-sync + websocket proxy + grunt.registerTask('sync', [ + 'browserSync:http', + 'concurrent:watch' + ]); + grunt.registerTask('dev', [ 'clean:tmp', 'clean:static', 'concurrent:dev', - 'browserSync:http', - 'concurrent:watch' + ]); + + grunt.registerTask('devNoSync', [ + 'clean:tmp', + 'clean:static', + 'concurrent:devNoSync', ]); grunt.registerTask('release', [ diff --git a/awx/ui/grunt-tasks/concurrent.js b/awx/ui/grunt-tasks/concurrent.js index f9606f0900..45085340bf 100644 --- a/awx/ui/grunt-tasks/concurrent.js +++ b/awx/ui/grunt-tasks/concurrent.js @@ -2,6 +2,10 @@ module.exports = { dev: { tasks: ['copy:vendor', 'copy:assets', 'copy:partials', 'copy:languages', 'copy:config', 'less:dev'], }, + // This concurrent target is intended for development ui builds that do not require raising browser-sync or filesystem polling + devNoSync: { + tasks: ['copy:vendor', 'copy:assets', 'copy:partials', 'copy:languages', 'copy:config', 'less:dev', 'webpack:dev'], + }, prod: { tasks: ['newer:copy:vendor', 'newer:copy:assets', 'newer:copy:partials', 'newer:copy:languages', 'newer:copy:config', 'newer:less:prod'] }, diff --git a/awx/ui/package.json b/awx/ui/package.json index 9406e24173..0ad7504597 100644 --- a/awx/ui/package.json +++ b/awx/ui/package.json @@ -16,8 +16,9 @@ "npm": "^3.10.3" }, "scripts": { - "build-docker-machine": "ip=$(docker-machine ip $DOCKER_MACHINE_NAME); npm set ansible-tower:django_host ${ip}; grunt dev", - "build-docker-cid": "ip=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' $DOCkER_CID` | npm set config ansible-tower:django_host ${ip}; grunt dev", + "build-docker-machine": "grunt dev; ip=$(docker-machine ip $DOCKER_MACHINE_NAME); npm set ansible-tower:django_host ${ip}; grunt sync", + "build-docker-cid": "grunt dev; ip=`docker inspect --format '{{ .NetworkSettings.IPAddress }}' $DOCkER_CID` | npm set config ansible-tower:django_host ${ip}; grunt sync", + "build-devel": "grunt devNoSync", "pot": "grunt nggettext_extract", "languages": "grunt nggettext_compile", "build-release": "grunt release",