Skip to content

Commit

Permalink
add build system to concatenate project files
Browse files Browse the repository at this point in the history
  • Loading branch information
prevostc committed Mar 7, 2015
1 parent a0e9a45 commit cc63f8d
Show file tree
Hide file tree
Showing 5 changed files with 125 additions and 54 deletions.
123 changes: 88 additions & 35 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,45 +6,98 @@ var sass = require('gulp-sass');
var minifyCss = require('gulp-minify-css');
var rename = require('gulp-rename');
var sh = require('shelljs');
var sourcemaps = require('gulp-sourcemaps');
var debug = require('gulp-debug');
var mainBowerFiles = require('main-bower-files');
var gulpFilter = require('gulp-filter');

var paths = {
sass: ['./scss/**/*.scss']
sass: ['./scss/**/*.scss'],
jsProject: ['./www/js/**/*.js'],
jsProjectTarget: 'project.js',
jsVendorTarget: 'vendor.js',
cssProject: ['./www/css/**/*.css'],
cssProjectTarget: 'project.css',
cssVendorTarget: 'vendor.css',
dist: 'www/dist'
};

gulp.task('default', ['sass']);

gulp.task('sass', function(done) {
gulp.src('./scss/ionic.app.scss')
.pipe(sass())
.pipe(gulp.dest('./www/css/'))
.pipe(minifyCss({
keepSpecialComments: 0
}))
.pipe(rename({ extname: '.min.css' }))
.pipe(gulp.dest('./www/css/'))
.on('end', done);
});

gulp.task('watch', function() {
gulp.watch(paths.sass, ['sass']);
});

gulp.task('install', ['git-check'], function() {
return bower.commands.install()
.on('log', function(data) {
gutil.log('bower', gutil.colors.cyan(data.id), data.message);
});
});

gulp.task('git-check', function(done) {
if (!sh.which('git')) {
console.log(
' ' + gutil.colors.red('Git is not installed.'),
'\n Git, the version control system, is required to download Ionic.',
'\n Download git here:', gutil.colors.cyan('http://git-scm.com/downloads') + '.',
'\n Once git is installed, run \'' + gutil.colors.cyan('gulp install') + '\' again.'
);
process.exit(1);
}
done();
gulp.task('sass', function (done) {
gulp.src('./scss/ionic.app.scss')
.pipe(sourcemaps.init())
.pipe(sass())
.pipe(sourcemaps.write())
.pipe(gulp.dest('./www/css/from_scss'))
.on('end', done);
});

gulp.task('watch', function () {
gulp.watch(paths.sass, ['sass']);
gulp.watch(paths.jsProject, ['js-concat-project']);
gulp.watch(paths.cssProject, ['css-concat-project']);
});

gulp.task('install', ['git-check'], function () {
return bower.commands.install()
.on('log', function (data) {
gutil.log('bower', gutil.colors.cyan(data.id), data.message);
});
});

gulp.task('git-check', function (done) {
if (!sh.which('git')) {
console.log(
' ' + gutil.colors.red('Git is not installed.'),
'\n Git, the version control system, is required to download Ionic.',
'\n Download git here:', gutil.colors.cyan('http://git-scm.com/downloads') + '.',
'\n Once git is installed, run \'' + gutil.colors.cyan('gulp install') + '\' again.'
);
process.exit(1);
}
done();
});


gulp.task('js-concat-project', function () {
return gulp.src(paths.jsProject)
.pipe(sourcemaps.init())
.pipe(concat(paths.jsProjectTarget))
.pipe(sourcemaps.write())
.pipe(gulp.dest(paths.dist));
});

gulp.task('js-concat-vendor', function () {
return gulp.src(mainBowerFiles())
.pipe(gulpFilter('**/*.js'))
.pipe(sourcemaps.init())
.pipe(concat(paths.jsVendorTarget))
.pipe(sourcemaps.write())
.pipe(gulp.dest(paths.dist));
});

gulp.task('css-concat-project', function () {
return gulp.src(paths.cssProject)
.pipe(sourcemaps.init())
.pipe(concat(paths.cssProjectTarget))
.pipe(sourcemaps.write())
.pipe(gulp.dest(paths.dist));
});

gulp.task('css-concat-vendor', function () {
return gulp.src(mainBowerFiles())
.pipe(gulpFilter('**/*.css'))
.pipe(sourcemaps.init())
.pipe(concat(paths.cssVendorTarget))
.pipe(sourcemaps.write())
.pipe(gulp.dest(paths.dist));
});

gulp.task('fonts-concat-vendor', function () {
return gulp.src(mainBowerFiles())
.pipe(gulpFilter(function (file) {
return /ionicons\/fonts/.test(file.path);
}))
.pipe(gulp.dest('./www/fonts/'));
});
11 changes: 10 additions & 1 deletion ionic.project
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
{
"name": "myApp",
"app_id": ""
"app_id": "",
"gulpStartupTasks": [
"js-concat-project",
"js-concat-vendor",
"css-concat-project",
"css-concat-vendor",
"fonts-concat-vendor",
"sass",
"watch"
]
}
41 changes: 23 additions & 18 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,20 +1,25 @@
{
"name": "myapp",
"version": "1.0.0",
"description": "myApp: An Ionic project",
"dependencies": {
"gulp": "^3.5.6",
"gulp-sass": "^0.7.1",
"gulp-concat": "^2.2.0",
"gulp-minify-css": "^0.3.0",
"gulp-rename": "^1.2.0"
},
"devDependencies": {
"async": "^0.9.0",
"bower": "^1.3.3",
"cordova-minify": "0.0.12",
"gulp-util": "^2.2.14",
"jshint": "^2.6.3",
"shelljs": "^0.3.0"
}
"name": "myapp",
"version": "1.0.0",
"description": "myApp: An Ionic project",
"dependencies": {
},
"devDependencies": {
"async": "^0.9.0",
"bower": "^1.3.3",
"cordova-minify": "0.0.12",
"gulp-util": "^2.2.14",
"jshint": "^2.6.3",
"shelljs": "^0.3.0",
"gulp-debug": "~2.0.1",
"gulp-sourcemaps": "~1.5.0",
"gulp-concat-vendor": "0.0.4",
"main-bower-files": "~2.5.0",
"gulp-filter": "~2.0.2",
"gulp": "^3.5.6",
"gulp-sass": "^0.7.1",
"gulp-concat": "^2.2.0",
"gulp-minify-css": "^0.3.0",
"gulp-rename": "^1.2.0"
}
}
2 changes: 2 additions & 0 deletions www/dist/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# this is the project build directory
*
2 changes: 2 additions & 0 deletions www/fonts/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# ionicons fonts needs to be in this directory...
*

0 comments on commit cc63f8d

Please sign in to comment.