mirror of
				https://github.com/cookiecutter/cookiecutter-django.git
				synced 2025-10-31 07:57:42 +03:00 
			
		
		
		
	merge in @@viviangb #585
This commit is contained in:
		
							parent
							
								
									700ee39be8
								
							
						
					
					
						commit
						cda3cfc641
					
				|  | @ -20,7 +20,6 @@ | ||||||
|     "use_python2": "n", |     "use_python2": "n", | ||||||
|     "use_docker": "y", |     "use_docker": "y", | ||||||
|     "use_heroku": "n", |     "use_heroku": "n", | ||||||
|     "use_grunt": "n", |     "js_task_runner": ["Gulp", "Grunt", "None"], | ||||||
|     "open_source_license": ["MIT", "BSD", "Apache Software License 2.0", "Not open source"], |     "open_source_license": ["MIT", "BSD", "Apache Software License 2.0", "Not open source"] | ||||||
|     "_cookiecutter_version": "Minimum cookiecutter version" |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -134,7 +134,25 @@ def remove_grunt_files(): | ||||||
|     """ |     """ | ||||||
|     Removes files needed for grunt if it isn't going to be used |     Removes files needed for grunt if it isn't going to be used | ||||||
|     """ |     """ | ||||||
|     for filename in ["Gruntfile.js", "package.json"]: |     for filename in ["Gruntfile.js"]: | ||||||
|  |         os.remove(os.path.join( | ||||||
|  |             PROJECT_DIRECTORY, filename | ||||||
|  |         )) | ||||||
|  | 
 | ||||||
|  | def remove_gulp_files(): | ||||||
|  |     """ | ||||||
|  |     Removes files needed for grunt if it isn't going to be used | ||||||
|  |     """ | ||||||
|  |     for filename in ["gulpfile.js"]: | ||||||
|  |         os.remove(os.path.join( | ||||||
|  |             PROJECT_DIRECTORY, filename | ||||||
|  |         )) | ||||||
|  | 
 | ||||||
|  | def remove_packageJSON_file(): | ||||||
|  |     """ | ||||||
|  |     Removes files needed for grunt if it isn't going to be used | ||||||
|  |     """ | ||||||
|  |     for filename in ["package.json"]: | ||||||
|         os.remove(os.path.join( |         os.remove(os.path.join( | ||||||
|             PROJECT_DIRECTORY, filename |             PROJECT_DIRECTORY, filename | ||||||
|         )) |         )) | ||||||
|  | @ -176,18 +194,24 @@ if '{{ cookiecutter.use_heroku }}'.lower() != 'y': | ||||||
| if '{{ cookiecutter.use_docker }}'.lower() != 'y': | if '{{ cookiecutter.use_docker }}'.lower() != 'y': | ||||||
|     remove_docker_files() |     remove_docker_files() | ||||||
| 
 | 
 | ||||||
| # 6. Removes all grunt files if it isn't going to be used | # 6. Removes all JS task manager files if it isn't going to be used | ||||||
| if '{{ cookiecutter.use_grunt }}'.lower() != 'y': | if '{{ cookiecutter.js_task_runner}}'.lower() == 'gulp': | ||||||
|     remove_grunt_files() |     remove_grunt_files() | ||||||
|  | elif '{{ cookiecutter.js_task_runner}}'.lower() == 'grunt': | ||||||
|  |     remove_gulp_files() | ||||||
|  | else: | ||||||
|  |     remove_gulp_files() | ||||||
|  |     remove_grunt_files() | ||||||
|  |     remove_packageJSON_file() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # 7. Display a warning if use_docker and use_grunt are selected. Grunt isn't supported by our | # 7. Display a warning if use_docker and js task runner are selected. Grunt isn't supported by our | ||||||
| # docker config atm. | # docker config atm. | ||||||
| if '{{ cookiecutter.use_grunt }}'.lower() == 'y' and '{{ cookiecutter.use_docker }}'.lower() == 'y': | if '{{ cookiecutter.js_task_runner }}'.lower() in ['grunt', 'gulp'] and '{{ cookiecutter.use_docker }}'.lower() == 'y': | ||||||
|     print( |     print( | ||||||
|         "You selected to use docker and grunt. This is NOT supported out of the box for now. You " |         "You selected to use docker and a JS task runner. This is NOT supported out of the box for now. You " | ||||||
|         "can continue to use the project like you normally would, but you will need to add a " |         "can continue to use the project like you normally would, but you will need to add a " | ||||||
|         " grunt service to your docker configuration manually." |         "js task runner service to your docker configuration manually." | ||||||
|     ) |     ) | ||||||
| 
 | 
 | ||||||
| # 7. Display a warning if use_docker and use_mailhog are selected. Mailhog isn't supported by our | # 7. Display a warning if use_docker and use_mailhog are selected. Mailhog isn't supported by our | ||||||
|  |  | ||||||
							
								
								
									
										107
									
								
								{{cookiecutter.project_slug}}/gulpfile.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								{{cookiecutter.project_slug}}/gulpfile.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,107 @@ | ||||||
|  | 
 | ||||||
|  | ////////////////////////////////
 | ||||||
|  | 		//Setup//
 | ||||||
|  | ////////////////////////////////
 | ||||||
|  | 
 | ||||||
|  | // Plugins
 | ||||||
|  | var gulp = require('gulp'), | ||||||
|  |       pjson = require('./package.json'), | ||||||
|  |       gutil = require('gulp-util'), | ||||||
|  |       sass = require('gulp-sass'), | ||||||
|  |       autoprefixer = require('gulp-autoprefixer'), | ||||||
|  |       cssnano = require('gulp-cssnano'), | ||||||
|  |       rename = require('gulp-rename'), | ||||||
|  |       del = require('del'), | ||||||
|  |       plumber = require('gulp-plumber'), | ||||||
|  |       pixrem = require('gulp-pixrem'), | ||||||
|  |       uglify = require('gulp-uglify'), | ||||||
|  |       imagemin = require('gulp-imagemin'), | ||||||
|  |       exec = require('gulp-exec'), | ||||||
|  |       runSequence = require('run-sequence'), | ||||||
|  |       browserSync = require('browser-sync'); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | // Relative paths function
 | ||||||
|  | var pathsConfig = function (appName) { | ||||||
|  |   this.app = "./" + (appName || pjson.name); | ||||||
|  | 
 | ||||||
|  |   return { | ||||||
|  |     app: this.app, | ||||||
|  |     templates: this.app + '/templates', | ||||||
|  |     css: this.app + '/static/css', | ||||||
|  |     sass: this.app + '/static/sass', | ||||||
|  |     fonts: this.app + '/static/fonts', | ||||||
|  |     images: this.app + '/static/images', | ||||||
|  |     js: this.app + '/static/js', | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | var paths = pathsConfig(); | ||||||
|  | 
 | ||||||
|  | ////////////////////////////////
 | ||||||
|  | 		//Tasks//
 | ||||||
|  | ////////////////////////////////
 | ||||||
|  | 
 | ||||||
|  | // Styles autoprefixing and minification
 | ||||||
|  | gulp.task('styles', function() { | ||||||
|  |   return gulp.src(paths.sass + '/project.scss') | ||||||
|  |     .pipe(sass().on('error', sass.logError)) | ||||||
|  |     .pipe(plumber()) // Checks for errors
 | ||||||
|  |     .pipe(autoprefixer({browsers: ['last 2 version']})) // Adds vendor prefixes
 | ||||||
|  |     .pipe(pixrem())  // add fallbacks for rem units
 | ||||||
|  |     .pipe(gulp.dest(paths.css)) | ||||||
|  |     .pipe(rename({ suffix: '.min' })) | ||||||
|  |     .pipe(cssnano()) // Minifies the result
 | ||||||
|  |     .pipe(gulp.dest(paths.css)); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | // Javascript minification
 | ||||||
|  | gulp.task('scripts', function() { | ||||||
|  |   return gulp.src(paths.js + '/project.js') | ||||||
|  |     .pipe(plumber()) // Checks for errors
 | ||||||
|  |     .pipe(uglify()) // Minifies the js
 | ||||||
|  |     .pipe(rename({ suffix: '.min' })) | ||||||
|  |     .pipe(gulp.dest(paths.js)); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | // Image compression
 | ||||||
|  | gulp.task('imgCompression', function(){ | ||||||
|  |   return gulp.src(paths.images + '/*') | ||||||
|  |     .pipe(imagemin()) // Compresses PNG, JPEG, GIF and SVG images
 | ||||||
|  |     .pipe(gulp.dest(paths.images)) | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | // Run django server
 | ||||||
|  | gulp.task('runServer', function() { | ||||||
|  |   exec('python manage.py runserver', function (err, stdout, stderr) { | ||||||
|  |     console.log(stdout); | ||||||
|  |     console.log(stderr); | ||||||
|  |   }); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | // Browser sync server for live reload
 | ||||||
|  | gulp.task('browserSync', function() { | ||||||
|  |     browserSync.init( | ||||||
|  |       [paths.css + "/*.css", paths.js + "*.js", paths.templates + '*.html'], { | ||||||
|  |         proxy:  "localhost:8000" | ||||||
|  |     }); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | // Default task
 | ||||||
|  | gulp.task('default', function() { | ||||||
|  |     runSequence(['styles', 'scripts', 'imgCompression'], 'runServer', 'browserSync'); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | ////////////////////////////////
 | ||||||
|  | 		//Watch//
 | ||||||
|  | ////////////////////////////////
 | ||||||
|  | 
 | ||||||
|  | // Watch
 | ||||||
|  | gulp.task('watch', ['default'], function() { | ||||||
|  | 
 | ||||||
|  |   gulp.watch(paths.sass + '/*.scss', ['styles']); | ||||||
|  |   gulp.watch(paths.js + '/*.js', ['scripts']); | ||||||
|  |   gulp.watch(paths.images + '/*', ['imgCompression']); | ||||||
|  |   gulp.watch('templates/*.html'); | ||||||
|  | 
 | ||||||
|  | }); | ||||||
|  | @ -3,17 +3,34 @@ | ||||||
|   "version": "{{ cookiecutter.version }}", |   "version": "{{ cookiecutter.version }}", | ||||||
|   "dependencies": {}, |   "dependencies": {}, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "grunt": "~0.4.5", |     {% if cookiecutter.js_task_runner == 'Grunt' %} | ||||||
|     "grunt-contrib-watch": "~0.6.1", |  | ||||||
|     "grunt-bg-shell": "~2.3.1", |  | ||||||
|     "connect-livereload": "~0.3.2", |  | ||||||
|     "time-grunt": "~1.2.1", |  | ||||||
|     "load-grunt-tasks": "~3.2.0", |  | ||||||
|     "grunt-sass": "~1.0.0", |  | ||||||
|     "grunt-postcss": "~0.5.5", |  | ||||||
|     "cssnano": "~2.1.0", |  | ||||||
|     "autoprefixer-core": "~5.2.1", |     "autoprefixer-core": "~5.2.1", | ||||||
|     "pixrem": "~1.3.1" |     "connect-livereload": "~0.3.2", | ||||||
|  |     "cssnano": "~2.1.0", | ||||||
|  |     "grunt": "~0.4.5", | ||||||
|  |     "grunt-bg-shell": "~2.3.1", | ||||||
|  |     "grunt-contrib-watch": "~0.6.1", | ||||||
|  |     "grunt-postcss": "~0.5.5", | ||||||
|  |     "grunt-sass": "~1.0.0", | ||||||
|  |     "load-grunt-tasks": "~3.2.0", | ||||||
|  |     "pixrem": "~1.3.1", | ||||||
|  |     "time-grunt": "~1.2.1" | ||||||
|  |     {% elif cookiecutter.js_task_runner == 'Gulp' %} | ||||||
|  |     "browser-sync": "^2.12.10", | ||||||
|  |     "del": "^2.2.0", | ||||||
|  |     "gulp": "^3.9.1", | ||||||
|  |     "gulp-autoprefixer": "^3.1.0", | ||||||
|  |     "gulp-cssnano": "^2.1.2", | ||||||
|  |     "gulp-exec": "^2.1.2", | ||||||
|  |     "gulp-imagemin": "^3.0.1", | ||||||
|  |     "gulp-pixrem": "^1.0.0", | ||||||
|  |     "gulp-plumber": "^1.1.0", | ||||||
|  |     "gulp-rename": "^1.2.2", | ||||||
|  |     "gulp-sass": "^2.3.1", | ||||||
|  |     "gulp-uglify": "^1.5.3", | ||||||
|  |     "gulp-util": "^3.0.7", | ||||||
|  |     "run-sequence": "^1.2.1" | ||||||
|  |     {% endif %} | ||||||
|   }, |   }, | ||||||
|   "engines": { |   "engines": { | ||||||
|     "node": ">=0.8.0" |     "node": ">=0.8.0" | ||||||
|  |  | ||||||
|  | @ -1,5 +1,10 @@ | ||||||
|  | 
 | ||||||
| // project specific CSS goes here | // project specific CSS goes here | ||||||
| 
 | 
 | ||||||
|  | //////////////////////////////// | ||||||
|  | 		//Variables// | ||||||
|  | //////////////////////////////// | ||||||
|  | 
 | ||||||
| // Alert colors | // Alert colors | ||||||
| 
 | 
 | ||||||
| $white: #fff; | $white: #fff; | ||||||
|  | @ -9,6 +14,10 @@ $pink: #f2dede; | ||||||
| $dark-pink: #eed3d7; | $dark-pink: #eed3d7; | ||||||
| $red: #b94a48; | $red: #b94a48; | ||||||
| 
 | 
 | ||||||
|  | //////////////////////////////// | ||||||
|  | 		//Alerts// | ||||||
|  | //////////////////////////////// | ||||||
|  | 
 | ||||||
| // bootstrap alert CSS, translated to the django-standard levels of | // bootstrap alert CSS, translated to the django-standard levels of | ||||||
| // debug, info, success, warning, error | // debug, info, success, warning, error | ||||||
| 
 | 
 | ||||||
|  | @ -24,8 +33,16 @@ $red: #b94a48; | ||||||
|   color: $red; |   color: $red; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | //////////////////////////////// | ||||||
|  | 		//Navbar// | ||||||
|  | //////////////////////////////// | ||||||
|  | 
 | ||||||
| // This is a fix for the bootstrap4 alpha release | // This is a fix for the bootstrap4 alpha release | ||||||
| 
 | 
 | ||||||
|  | .navbar { | ||||||
|  |   border-radius: 0px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| @media (max-width: 47.9em) { | @media (max-width: 47.9em) { | ||||||
|   .navbar-nav .nav-item { |   .navbar-nav .nav-item { | ||||||
|     display: inline-block; |     display: inline-block; | ||||||
|  | @ -42,6 +59,10 @@ $red: #b94a48; | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | //////////////////////////////// | ||||||
|  | 		//Django Toolbar// | ||||||
|  | //////////////////////////////// | ||||||
|  | 
 | ||||||
| // Display django-debug-toolbar. | // Display django-debug-toolbar. | ||||||
| // See https://github.com/django-debug-toolbar/django-debug-toolbar/issues/742 | // See https://github.com/django-debug-toolbar/django-debug-toolbar/issues/742 | ||||||
| // and https://github.com/pydanny/cookiecutter-django/issues/317 | // and https://github.com/pydanny/cookiecutter-django/issues/317 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user