feat(app): disable Angular debug information on release (#867)

pull/870/head
Anthony Lapenna 2017-05-19 17:48:03 +02:00 committed by GitHub
parent 782df54570
commit 2ef1c90248
3 changed files with 131 additions and 99 deletions

View File

@ -51,9 +51,14 @@ angular.module('portainer', [
'user', 'user',
'users', 'users',
'volumes']) 'volumes'])
.config(['$stateProvider', '$urlRouterProvider', '$httpProvider', 'localStorageServiceProvider', 'jwtOptionsProvider', 'AnalyticsProvider', '$uibTooltipProvider', function ($stateProvider, $urlRouterProvider, $httpProvider, localStorageServiceProvider, jwtOptionsProvider, AnalyticsProvider, $uibTooltipProvider) { .config(['$stateProvider', '$urlRouterProvider', '$httpProvider', 'localStorageServiceProvider', 'jwtOptionsProvider', 'AnalyticsProvider', '$uibTooltipProvider', '$compileProvider', function ($stateProvider, $urlRouterProvider, $httpProvider, localStorageServiceProvider, jwtOptionsProvider, AnalyticsProvider, $uibTooltipProvider, $compileProvider) {
'use strict'; 'use strict';
var environment = '@@ENVIRONMENT';
if (environment === 'production') {
$compileProvider.debugInfoEnabled(false);
}
localStorageServiceProvider localStorageServiceProvider
.setStorageType('sessionStorage') .setStorageType('sessionStorage')
.setPrefix('portainer'); .setPrefix('portainer');
@ -100,7 +105,7 @@ angular.module('portainer', [
error: '' error: ''
}, },
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/auth/auth.html', templateUrl: 'app/components/auth/auth.html',
controller: 'AuthenticationController' controller: 'AuthenticationController'
} }
@ -113,63 +118,63 @@ angular.module('portainer', [
parent: 'root', parent: 'root',
url: '/containers/', url: '/containers/',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/containers/containers.html', templateUrl: 'app/components/containers/containers.html',
controller: 'ContainersController' controller: 'ContainersController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
} }
}) })
.state('container', { .state('container', {
url: "^/containers/:id", url: '^/containers/:id',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/container/container.html', templateUrl: 'app/components/container/container.html',
controller: 'ContainerController' controller: 'ContainerController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
} }
}) })
.state('stats', { .state('stats', {
url: "^/containers/:id/stats", url: '^/containers/:id/stats',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/stats/stats.html', templateUrl: 'app/components/stats/stats.html',
controller: 'StatsController' controller: 'StatsController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
} }
}) })
.state('logs', { .state('logs', {
url: "^/containers/:id/logs", url: '^/containers/:id/logs',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/containerLogs/containerlogs.html', templateUrl: 'app/components/containerLogs/containerlogs.html',
controller: 'ContainerLogsController' controller: 'ContainerLogsController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
} }
}) })
.state('console', { .state('console', {
url: "^/containers/:id/console", url: '^/containers/:id/console',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/containerConsole/containerConsole.html', templateUrl: 'app/components/containerConsole/containerConsole.html',
controller: 'ContainerConsoleController' controller: 'ContainerConsoleController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -179,11 +184,11 @@ angular.module('portainer', [
parent: 'root', parent: 'root',
url: '/dashboard', url: '/dashboard',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/dashboard/dashboard.html', templateUrl: 'app/components/dashboard/dashboard.html',
controller: 'DashboardController' controller: 'DashboardController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -191,75 +196,75 @@ angular.module('portainer', [
}) })
.state('actions', { .state('actions', {
abstract: true, abstract: true,
url: "/actions", url: '/actions',
views: { views: {
"content@": { 'content@': {
template: '<div ui-view="content@"></div>' template: '<div ui-view="content@"></div>'
}, },
"sidebar@": { 'sidebar@': {
template: '<div ui-view="sidebar@"></div>' template: '<div ui-view"sidebar@"></div>'
} }
} }
}) })
.state('actions.create', { .state('actions.create', {
abstract: true, abstract: true,
url: "/create", url: '/create',
views: { views: {
"content@": { 'content@': {
template: '<div ui-view="content@"></div>' template: '<div ui-view="content@"></div>'
}, },
"sidebar@": { 'sidebar@': {
template: '<div ui-view="sidebar@"></div>' template: '<div ui-view"sidebar@"></div>'
} }
} }
}) })
.state('actions.create.container', { .state('actions.create.container', {
url: "/container", url: '/container',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/createContainer/createcontainer.html', templateUrl: 'app/components/createContainer/createcontainer.html',
controller: 'CreateContainerController' controller: 'CreateContainerController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
} }
}) })
.state('actions.create.network', { .state('actions.create.network', {
url: "/network", url: '/network',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/createNetwork/createnetwork.html', templateUrl: 'app/components/createNetwork/createnetwork.html',
controller: 'CreateNetworkController' controller: 'CreateNetworkController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
} }
}) })
.state('actions.create.service', { .state('actions.create.service', {
url: "/service", url: '/service',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/createService/createservice.html', templateUrl: 'app/components/createService/createservice.html',
controller: 'CreateServiceController' controller: 'CreateServiceController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
} }
}) })
.state('actions.create.volume', { .state('actions.create.volume', {
url: "/volume", url: '/volume',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/createVolume/createvolume.html', templateUrl: 'app/components/createVolume/createvolume.html',
controller: 'CreateVolumeController' controller: 'CreateVolumeController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -268,11 +273,11 @@ angular.module('portainer', [
.state('docker', { .state('docker', {
url: '/docker/', url: '/docker/',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/docker/docker.html', templateUrl: 'app/components/docker/docker.html',
controller: 'DockerController' controller: 'DockerController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -281,11 +286,11 @@ angular.module('portainer', [
.state('endpoints', { .state('endpoints', {
url: '/endpoints/', url: '/endpoints/',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/endpoints/endpoints.html', templateUrl: 'app/components/endpoints/endpoints.html',
controller: 'EndpointsController' controller: 'EndpointsController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -294,11 +299,11 @@ angular.module('portainer', [
.state('endpoint', { .state('endpoint', {
url: '^/endpoints/:id', url: '^/endpoints/:id',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/endpoint/endpoint.html', templateUrl: 'app/components/endpoint/endpoint.html',
controller: 'EndpointController' controller: 'EndpointController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -307,11 +312,11 @@ angular.module('portainer', [
.state('endpoint.access', { .state('endpoint.access', {
url: '^/endpoints/:id/access', url: '^/endpoints/:id/access',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/endpointAccess/endpointAccess.html', templateUrl: 'app/components/endpointAccess/endpointAccess.html',
controller: 'EndpointAccessController' controller: 'EndpointAccessController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -320,7 +325,7 @@ angular.module('portainer', [
.state('endpointInit', { .state('endpointInit', {
url: '/init/endpoint', url: '/init/endpoint',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/endpointInit/endpointInit.html', templateUrl: 'app/components/endpointInit/endpointInit.html',
controller: 'EndpointInitController' controller: 'EndpointInitController'
} }
@ -329,11 +334,11 @@ angular.module('portainer', [
.state('events', { .state('events', {
url: '/events/', url: '/events/',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/events/events.html', templateUrl: 'app/components/events/events.html',
controller: 'EventsController' controller: 'EventsController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -342,11 +347,11 @@ angular.module('portainer', [
.state('images', { .state('images', {
url: '/images/', url: '/images/',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/images/images.html', templateUrl: 'app/components/images/images.html',
controller: 'ImagesController' controller: 'ImagesController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -355,11 +360,11 @@ angular.module('portainer', [
.state('image', { .state('image', {
url: '^/images/:id/', url: '^/images/:id/',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/image/image.html', templateUrl: 'app/components/image/image.html',
controller: 'ImageController' controller: 'ImageController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -368,11 +373,11 @@ angular.module('portainer', [
.state('networks', { .state('networks', {
url: '/networks/', url: '/networks/',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/networks/networks.html', templateUrl: 'app/components/networks/networks.html',
controller: 'NetworksController' controller: 'NetworksController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -381,11 +386,11 @@ angular.module('portainer', [
.state('network', { .state('network', {
url: '^/networks/:id/', url: '^/networks/:id/',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/network/network.html', templateUrl: 'app/components/network/network.html',
controller: 'NetworkController' controller: 'NetworkController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -394,11 +399,11 @@ angular.module('portainer', [
.state('node', { .state('node', {
url: '^/nodes/:id/', url: '^/nodes/:id/',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/node/node.html', templateUrl: 'app/components/node/node.html',
controller: 'NodeController' controller: 'NodeController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -407,11 +412,11 @@ angular.module('portainer', [
.state('services', { .state('services', {
url: '/services/', url: '/services/',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/services/services.html', templateUrl: 'app/components/services/services.html',
controller: 'ServicesController' controller: 'ServicesController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -420,11 +425,11 @@ angular.module('portainer', [
.state('service', { .state('service', {
url: '^/service/:id/', url: '^/service/:id/',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/service/service.html', templateUrl: 'app/components/service/service.html',
controller: 'ServiceController' controller: 'ServiceController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -433,11 +438,11 @@ angular.module('portainer', [
.state('settings', { .state('settings', {
url: '/settings/', url: '/settings/',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/settings/settings.html', templateUrl: 'app/components/settings/settings.html',
controller: 'SettingsController' controller: 'SettingsController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -446,11 +451,11 @@ angular.module('portainer', [
.state('task', { .state('task', {
url: '^/task/:id', url: '^/task/:id',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/task/task.html', templateUrl: 'app/components/task/task.html',
controller: 'TaskController' controller: 'TaskController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -463,11 +468,11 @@ angular.module('portainer', [
hide_descriptions: false hide_descriptions: false
}, },
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/templates/templates.html', templateUrl: 'app/components/templates/templates.html',
controller: 'TemplatesController' controller: 'TemplatesController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -480,11 +485,11 @@ angular.module('portainer', [
hide_descriptions: true hide_descriptions: true
}, },
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/templates/templates.html', templateUrl: 'app/components/templates/templates.html',
controller: 'TemplatesController' controller: 'TemplatesController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -493,11 +498,11 @@ angular.module('portainer', [
.state('volumes', { .state('volumes', {
url: '/volumes/', url: '/volumes/',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/volumes/volumes.html', templateUrl: 'app/components/volumes/volumes.html',
controller: 'VolumesController' controller: 'VolumesController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -506,11 +511,11 @@ angular.module('portainer', [
.state('users', { .state('users', {
url: '/users/', url: '/users/',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/users/users.html', templateUrl: 'app/components/users/users.html',
controller: 'UsersController' controller: 'UsersController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -519,11 +524,11 @@ angular.module('portainer', [
.state('user', { .state('user', {
url: '^/users/:id', url: '^/users/:id',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/user/user.html', templateUrl: 'app/components/user/user.html',
controller: 'UserController' controller: 'UserController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -532,11 +537,11 @@ angular.module('portainer', [
.state('swarm', { .state('swarm', {
url: '/swarm/', url: '/swarm/',
views: { views: {
"content@": { 'content@': {
templateUrl: 'app/components/swarm/swarm.html', templateUrl: 'app/components/swarm/swarm.html',
controller: 'SwarmController' controller: 'SwarmController'
}, },
"sidebar@": { 'sidebar@': {
templateUrl: 'app/components/sidebar/sidebar.html', templateUrl: 'app/components/sidebar/sidebar.html',
controller: 'SidebarController' controller: 'SidebarController'
} }
@ -564,7 +569,7 @@ angular.module('portainer', [
}); });
} }
}, function error(err) { }, function error(err) {
Notifications.error("Failure", err, 'Unable to retrieve application settings'); Notifications.error('Failure', err, 'Unable to retrieve application settings');
}); });
$rootScope.$state = $state; $rootScope.$state = $state;

View File

@ -14,10 +14,12 @@ module.exports = function (grunt) {
grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-usemin'); grunt.loadNpmTasks('grunt-usemin');
grunt.loadNpmTasks('grunt-replace'); grunt.loadNpmTasks('grunt-replace');
grunt.loadNpmTasks('grunt-config');
// Default task. // Default task.
grunt.registerTask('default', ['eslint', 'build']); grunt.registerTask('default', ['eslint', 'build']);
grunt.registerTask('build', [ grunt.registerTask('build', [
'config:dev',
'clean:app', 'clean:app',
'if:unixBinaryNotExist', 'if:unixBinaryNotExist',
'html2js', 'html2js',
@ -25,12 +27,14 @@ module.exports = function (grunt) {
'recess:build', 'recess:build',
'concat', 'concat',
'clean:tmpl', 'clean:tmpl',
'replace',
'copy', 'copy',
'filerev', 'filerev',
'usemin', 'usemin',
'clean:tmp' 'clean:tmp'
]); ]);
grunt.registerTask('release', [ grunt.registerTask('release', [
'config:prod',
'clean:all', 'clean:all',
'if:unixBinaryNotExist', 'if:unixBinaryNotExist',
'html2js', 'html2js',
@ -39,76 +43,80 @@ module.exports = function (grunt) {
'concat', 'concat',
'clean:tmpl', 'clean:tmpl',
'cssmin', 'cssmin',
'replace',
'uglify', 'uglify',
'copy:assets', 'copy:assets',
'filerev', 'filerev',
'usemin', 'usemin',
'clean:tmp', 'clean:tmp'
'replace'
]); ]);
grunt.registerTask('release-win', [ grunt.registerTask('release-win', [
'config:prod',
'clean:all', 'clean:all',
'if:windowsBinaryNotExist', 'if:windowsBinaryNotExist',
'html2js', 'html2js',
'useminPrepare', 'useminPrepare:release',
'recess:build', 'recess:build',
'concat', 'concat',
'clean:tmpl', 'clean:tmpl',
'cssmin', 'cssmin',
'replace',
'uglify', 'uglify',
'copy', 'copy',
'filerev', 'filerev',
'usemin', 'usemin',
'clean:tmp', 'clean:tmp'
'replace'
]); ]);
grunt.registerTask('release-arm', [ grunt.registerTask('release-arm', [
'config:prod',
'clean:all', 'clean:all',
'if:unixArmBinaryNotExist', 'if:unixArmBinaryNotExist',
'html2js', 'html2js',
'useminPrepare', 'useminPrepare:release',
'recess:build', 'recess:build',
'concat', 'concat',
'clean:tmpl', 'clean:tmpl',
'cssmin', 'cssmin',
'replace',
'uglify', 'uglify',
'copy', 'copy',
'filerev', 'filerev',
'usemin', 'usemin',
'clean:tmp', 'clean:tmp'
'replace'
]); ]);
grunt.registerTask('release-arm64', [ grunt.registerTask('release-arm64', [
'config:prod',
'clean:all', 'clean:all',
'if:unixArm64BinaryNotExist', 'if:unixArm64BinaryNotExist',
'html2js', 'html2js',
'useminPrepare', 'useminPrepare:release',
'recess:build', 'recess:build',
'concat', 'concat',
'clean:tmpl', 'clean:tmpl',
'cssmin', 'cssmin',
'replace',
'uglify', 'uglify',
'copy', 'copy',
'filerev', 'filerev',
'usemin', 'usemin',
'clean:tmp', 'clean:tmp'
'replace'
]); ]);
grunt.registerTask('release-macos', [ grunt.registerTask('release-macos', [
'config:prod',
'clean:all', 'clean:all',
'if:darwinBinaryNotExist', 'if:darwinBinaryNotExist',
'html2js', 'html2js',
'useminPrepare', 'useminPrepare:release',
'recess:build', 'recess:build',
'concat', 'concat',
'clean:tmpl', 'clean:tmpl',
'cssmin', 'cssmin',
'replace',
'uglify', 'uglify',
'copy', 'copy',
'filerev', 'filerev',
'usemin', 'usemin',
'clean:tmp', 'clean:tmp'
'replace'
]); ]);
grunt.registerTask('lint', ['eslint']); grunt.registerTask('lint', ['eslint']);
grunt.registerTask('run', ['if:unixBinaryNotExist', 'build', 'shell:buildImage', 'shell:run']); grunt.registerTask('run', ['if:unixBinaryNotExist', 'build', 'shell:buildImage', 'shell:run']);
@ -127,6 +135,22 @@ module.exports = function (grunt) {
grunt.initConfig({ grunt.initConfig({
distdir: 'dist', distdir: 'dist',
pkg: grunt.file.readJSON('package.json'), pkg: grunt.file.readJSON('package.json'),
config: {
dev: {
options: {
variables: {
'environment': 'development'
}
}
},
prod: {
options: {
variables: {
'environment': 'production'
}
}
}
},
src: { src: {
js: ['app/**/*.js', '!app/**/*.spec.js'], js: ['app/**/*.js', '!app/**/*.spec.js'],
jsTpl: ['<%= distdir %>/templates/**/*.js'], jsTpl: ['<%= distdir %>/templates/**/*.js'],
@ -268,8 +292,6 @@ module.exports = function (grunt) {
}, },
uglify: { uglify: {
dist: { dist: {
// options: {
// },
src: ['<%= src.js %>', '<%= src.jsTpl %>'], src: ['<%= src.js %>', '<%= src.jsTpl %>'],
dest: '<%= distdir %>/js/<%= pkg.name %>.js' dest: '<%= distdir %>/js/<%= pkg.name %>.js'
}, },
@ -450,9 +472,13 @@ module.exports = function (grunt) {
} }
}, },
replace: { replace: {
dist: { concat: {
options: { options: {
patterns: [ patterns: [
{
match: 'ENVIRONMENT',
replacement: '<%= grunt.config.get("environment") %>'
},
{ {
match: 'CONFIG_GA_ID', match: 'CONFIG_GA_ID',
replacement: '<%= pkg.config.GA_ID %>' replacement: '<%= pkg.config.GA_ID %>'
@ -463,8 +489,8 @@ module.exports = function (grunt) {
{ {
expand: true, expand: true,
flatten: true, flatten: true,
src: ['dist/js/**.js'], src: ['.tmp/concat/js/app.js'],
dest: 'dist/js/' dest: '.tmp/concat/js'
} }
] ]
} }

View File

@ -27,6 +27,7 @@
"bower": "^1.5.2", "bower": "^1.5.2",
"eslint": "^3.19.0", "eslint": "^3.19.0",
"grunt": "~0.4.0", "grunt": "~0.4.0",
"grunt-config": "^1.0.0",
"grunt-contrib-clean": "~0.4.0", "grunt-contrib-clean": "~0.4.0",
"grunt-contrib-concat": "~0.1.3", "grunt-contrib-concat": "~0.1.3",
"grunt-contrib-copy": "~0.4.0", "grunt-contrib-copy": "~0.4.0",