Skip to content
This repository has been archived by the owner on Sep 5, 2024. It is now read-only.

Commit

Permalink
refactor(build): moves build-scss into its own file
Browse files Browse the repository at this point in the history
  • Loading branch information
Robert Messerle committed May 6, 2015
1 parent 4197c04 commit 161763e
Show file tree
Hide file tree
Showing 4 changed files with 104 additions and 129 deletions.
44 changes: 43 additions & 1 deletion gulp/globals.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,52 @@ global.fs = require('fs');
global.argv = require('minimist')(process.argv.slice(2));
global.karma = require('karma').server;
global.path = require('path');
global.rename = require('gulp-rename');
global.filter = require('gulp-filter');
global._ = require('lodash');
global.glob = require('glob').sync;
global.lazypipe = require('lazypipe');
global.series = require('stream-series');
global.through2 = require('through2');
global.autoprefixer = require('gulp-autoprefixer');
global.concat = require('gulp-concat');
global.filter = require('gulp-filter');
global.gulpif = require('gulp-if');
global.insert = require('gulp-insert');
global.jshint = require('gulp-jshint');
global.minifyCss = require('gulp-minify-css');
global.ngAnnotate = require('gulp-ng-annotate');
global.plumber = require('gulp-plumber');
global.sass = require('gulp-sass');
global.uglify = require('gulp-uglify');
global.webserver = require('gulp-webserver');

global.IS_RELEASE_BUILD = !!argv.release;
global.IS_DEMO_BUILD = (!!argv.module || !!argv.m || !!argv.c);
global.BUILD_MODE = argv.mode;
global.VERSION = argv.version || require('../package.json').version;
global.LR_PORT = argv.port || argv.p || 8080;

global.config = require('./config');
global.utils = require(root + '/scripts/gulp-utils.js');

global.BUILD_MODE = getBuildMode(global.IS_DEMO_BUILD ? 'demos' : argv.mode);

function getBuildMode (mode) {
switch (mode) {
case 'closure': return {
transform: utils.addClosurePrefixes,
outputDir: path.join(config.outputDir, 'modules/closure') + path.sep,
useBower: false
};
case 'demos': return {
transform: utils.addJsWrapper,
outputDir: path.join(config.outputDir, 'demos') + path.sep,
useBower: false
};
default: return {
transform: utils.addJsWrapper,
outputDir: path.join(config.outputDir, 'modules/js') + path.sep,
useBower: true
};
}
}
52 changes: 52 additions & 0 deletions gulp/tasks/build-scss.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
exports.task = function() {
var modules = argv['modules'],
overrides = argv['override'],
dest = argv['output-dir'] || config.outputDir,
filename = argv['filename'] || 'angular-material',
paths = getPaths();

gutil.log("Building css files...");
var streams = [];
streams.push(
gulp.src(paths)
.pipe(filterNonCodeFiles())
.pipe(filter(['**', '!**/*-theme.scss']))
.pipe(concat('angular-material.scss'))
.pipe(sass())
.pipe(rename({ basename: filename }))
.pipe(autoprefix())
.pipe(insert.prepend(config.banner))
.pipe(gulp.dest(dest))
.pipe(gulpif(IS_RELEASE_BUILD, lazypipe()
.pipe(minifyCss)
.pipe(rename, {extname: '.min.css'})
.pipe(gulp.dest, dest)
()
))
);
if (IS_RELEASE_BUILD) {
var baseVars = fs.readFileSync('src/core/style/variables.scss', 'utf8').toString();
streams.push(
gulp.src(config.scssStandaloneFiles)
.pipe(insert.prepend(baseVars))
.pipe(sass())
.pipe(autoprefix())
.pipe(insert.prepend(config.banner))
.pipe(rename({prefix: 'angular-material-'}))
.pipe(gulp.dest(path.join(dest, 'modules', 'css')))
);
}
return series(streams);
function getPaths () {
var paths = config.scssBaseFiles.slice();
if (modules) {
paths.push.apply(paths, modules.split(',').map(function (module) {
return 'src/components/' + module + '/*.scss';
}));
} else {
paths.push(path.join(config.paths, '*.scss'));
}
overrides && paths.unshift(overrides);
return paths;
}
};
134 changes: 7 additions & 127 deletions gulpfile.js
Original file line number Diff line number Diff line change
@@ -1,78 +1,12 @@
global.root = __dirname;
require('./gulp/globals');

/** Regular npm dependendencies */
var _ = require('lodash');
var glob = require('glob').sync;
var lazypipe = require('lazypipe');
var series = require('stream-series');
var through2 = require('through2');

/** Gulp dependencies */
var autoprefixer = require('gulp-autoprefixer');
var concat = require('gulp-concat');
var filter = require('gulp-filter');
var gulpif = require('gulp-if');
var insert = require('gulp-insert');
var jshint = require('gulp-jshint');
var minifyCss = require('gulp-minify-css');
var ngAnnotate = require('gulp-ng-annotate');
var plumber = require('gulp-plumber');
var rename = require('gulp-rename');
var sass = require('gulp-sass');
var uglify = require('gulp-uglify');
var webserver = require('gulp-webserver');

/** Local dependencies */
var buildConfig = require('./config/build.config');
var utils = require('./scripts/gulp-utils.js');

/** Arguments */

/** Grab-bag of build configuration. */
var config = require('./gulp/config');

var LR_PORT = argv.port || argv.p || 8080;

var buildModes = {
'closure': {
transform: utils.addClosurePrefixes,
outputDir: path.join(config.outputDir, 'modules/closure') + path.sep,
useBower: false
},
'demos': {
transform: utils.addJsWrapper,
outputDir: path.join(config.outputDir, 'demos') + path.sep,
useBower: false
},
'default': {
transform: utils.addJsWrapper,
outputDir: path.join(config.outputDir, 'modules/js') + path.sep,
useBower: true
}
};

IS_DEMO_BUILD && (BUILD_MODE="demos");
BUILD_MODE = buildModes[BUILD_MODE] || buildModes['default'];


if (IS_RELEASE_BUILD) {
console.log(
gutil.colors.red('--release:'),
'Building release version (minified)...'
);
console.log(gutil.colors.red('--release:'), 'Building release version (minified)...');
}

require('./docs/gulpfile')(gulp, IS_RELEASE_BUILD);

/** *****************************************
*
* Project-wide Build Tasks
*
** ***************************************** */



gulp.task('build-all-modules', function() {
return series(gulp.src(['src/components/*', 'src/core/'])
.pipe(through2.obj(function(folder, enc, next) {
Expand Down Expand Up @@ -248,7 +182,7 @@ global.buildJs = function buildJs(isRelease) {
.pipe(gulp.dest, config.outputDir)
()
));
}
};

// builds the theming related css and provides it as a JS const for angular
global.themeBuildStream = function themeBuildStream() {
Expand All @@ -257,7 +191,7 @@ global.themeBuildStream = function themeBuildStream() {
.pipe(utils.hoistScssVariables())
.pipe(sass())
.pipe(utils.cssToNgConstant('material.core', '$MD_THEME_CSS'));
}
};


/** *****************************************
Expand Down Expand Up @@ -320,60 +254,6 @@ gulp.task('build-module-demo', function() {
*
** ***************************************** */

gulp.task('build-scss', function() {
var modules = argv['modules'],
overrides = argv['override'],
dest = argv['output-dir'] || config.outputDir,
filename = argv['filename'] || 'angular-material',
paths = getPaths();

gutil.log("Building css files...");
var streams = [];
streams.push(
gulp.src(paths)
.pipe(filterNonCodeFiles())
.pipe(filter(['**', '!**/*-theme.scss'])) // remove once ported
.pipe(concat('angular-material.scss'))
// .pipe(insert.append(defaultThemeContents))
.pipe(sass())
.pipe(rename({ basename: filename }))
.pipe(autoprefix())
.pipe(insert.prepend(config.banner))
.pipe(gulp.dest(dest))
.pipe(gulpif(IS_RELEASE_BUILD, lazypipe()
.pipe(minifyCss)
.pipe(rename, {extname: '.min.css'})
.pipe(gulp.dest, dest)
()
))
);
if (IS_RELEASE_BUILD) {
var baseVars = fs.readFileSync('src/core/style/variables.scss', 'utf8').toString();
streams.push(
gulp.src(config.scssStandaloneFiles)
.pipe(insert.prepend(baseVars))
.pipe(sass())
.pipe(autoprefix())
.pipe(insert.prepend(config.banner))
.pipe(rename({prefix: 'angular-material-'}))
.pipe(gulp.dest(path.join(dest, 'modules', 'css')))
);
}
return series(streams);
function getPaths () {
var paths = config.scssBaseFiles.slice();
if (modules) {
paths.push.apply(paths, modules.split(',').map(function (module) {
return 'src/components/' + module + '/*.scss';
}));
} else {
paths.push(path.join(config.paths, '*.scss'));
}
overrides && paths.unshift(overrides);
console.log(paths);
return paths;
}
});

/** *****************************************
*
Expand All @@ -394,17 +274,17 @@ function readModuleArg() {
return module;
}

function filterNonCodeFiles() {
global.filterNonCodeFiles = function filterNonCodeFiles() {
return filter(function(file) {
return !/demo|module\.json|\.spec.js|README/.test(file.path);
});
}
};

function autoprefix() {
global.autoprefix = function autoprefix() {
return autoprefixer({browsers: [
'last 2 versions', 'last 4 Android versions'
]});
}
};

//-- read in all files from gulp/tasks and create tasks for them
fs.readdirSync('./gulp/tasks')
Expand Down
3 changes: 2 additions & 1 deletion src/components/tabs/js/tabDirective.js
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,8 @@ function MdTab () {
function (newIndex) {
data.index = newIndex;
ctrl.updateTabOrder();
});
}
);
scope.$on('$destroy', function () { ctrl.removeTab(data); });

function getLabel () {
Expand Down

0 comments on commit 161763e

Please sign in to comment.