2017-06-21 00:43:49 +00:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2017 Jeremy Thomerson
|
|
|
|
* Licensed under the MIT license.
|
|
|
|
*/
|
2017-06-22 13:34:19 +00:00
|
|
|
var path = require('path'),
|
2022-06-16 13:29:22 +00:00
|
|
|
getCodeVersion = require('silvermine-serverless-utils/src/get-code-version');
|
2017-06-22 13:34:19 +00:00
|
|
|
|
2022-02-15 21:50:20 +00:00
|
|
|
const sass = require('sass');
|
2019-05-31 17:12:16 +00:00
|
|
|
|
2017-06-21 00:43:49 +00:00
|
|
|
module.exports = function(grunt) {
|
|
|
|
|
2017-06-22 13:34:19 +00:00
|
|
|
var DEBUG = !!grunt.option('debug'),
|
2022-12-27 16:24:22 +00:00
|
|
|
pkgJSON = grunt.file.readJSON('package.json'),
|
|
|
|
config, versionInfo;
|
|
|
|
|
|
|
|
try {
|
|
|
|
versionInfo = getCodeVersion.both();
|
|
|
|
} catch(e) {
|
|
|
|
// When this package is installed as a git URL, getCodeVersion throws an error and
|
|
|
|
// is not able to find the git version for this package. So, we fall back to using
|
|
|
|
// the version number from package.json
|
|
|
|
versionInfo = pkgJSON.version;
|
|
|
|
}
|
2017-06-21 00:43:49 +00:00
|
|
|
|
|
|
|
config = {
|
|
|
|
js: {
|
|
|
|
all: [ 'Gruntfile.js', 'src/**/*.js', 'tests/**/*.js' ],
|
2017-06-22 13:34:19 +00:00
|
|
|
standalone: path.join(__dirname, 'src', 'js', 'standalone.js'),
|
|
|
|
},
|
|
|
|
|
|
|
|
sass: {
|
2022-02-15 21:50:20 +00:00
|
|
|
base: path.join(__dirname, 'src', 'scss'),
|
2017-06-22 13:34:19 +00:00
|
|
|
all: [ 'src/**/*.scss' ],
|
2017-06-21 00:43:49 +00:00
|
|
|
},
|
2017-06-22 13:34:19 +00:00
|
|
|
|
|
|
|
dist: {
|
|
|
|
base: path.join(__dirname, 'dist'),
|
2019-06-10 14:28:10 +00:00
|
|
|
jsFileName: 'silvermine-videojs-quality-selector',
|
2017-06-22 13:34:19 +00:00
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
config.dist.js = {
|
2019-06-10 14:28:10 +00:00
|
|
|
bundle: path.join(config.dist.base, 'js', '<%= config.dist.jsFileName %>.js'),
|
|
|
|
minified: path.join(config.dist.base, 'js', '<%= config.dist.jsFileName %>.min.js'),
|
2017-06-22 13:34:19 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
config.dist.css = {
|
|
|
|
base: path.join(config.dist.base, 'css'),
|
|
|
|
all: path.join(config.dist.base, '**', '*.css'),
|
2017-06-21 00:43:49 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
grunt.initConfig({
|
|
|
|
|
2022-12-27 16:24:22 +00:00
|
|
|
pkg: pkgJSON,
|
|
|
|
versionInfo: versionInfo,
|
2017-06-22 13:34:19 +00:00
|
|
|
config: config,
|
|
|
|
|
|
|
|
browserify: {
|
|
|
|
main: {
|
|
|
|
src: config.js.standalone,
|
|
|
|
dest: config.dist.js.bundle,
|
2022-07-19 16:23:30 +00:00
|
|
|
options: {
|
|
|
|
transform: [
|
|
|
|
[
|
|
|
|
'babelify',
|
|
|
|
{
|
|
|
|
presets: [
|
|
|
|
[
|
|
|
|
'@babel/preset-env',
|
|
|
|
{
|
|
|
|
debug: true,
|
|
|
|
useBuiltIns: 'usage',
|
|
|
|
shippedProposals: true,
|
|
|
|
corejs: 3,
|
|
|
|
},
|
|
|
|
],
|
|
|
|
],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
],
|
|
|
|
},
|
2017-06-22 13:34:19 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
uglify: {
|
|
|
|
main: {
|
|
|
|
files: {
|
|
|
|
'<%= config.dist.js.minified %>': config.dist.js.bundle,
|
|
|
|
},
|
|
|
|
options: {
|
|
|
|
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> <%= versionInfo %> */\n',
|
|
|
|
sourceMap: true,
|
|
|
|
sourceMapIncludeSources: true,
|
|
|
|
mangle: true,
|
|
|
|
compress: true,
|
|
|
|
beautify: false,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
sass: {
|
|
|
|
options: {
|
2019-05-31 17:12:16 +00:00
|
|
|
implementation: sass,
|
2017-06-22 13:34:19 +00:00
|
|
|
sourceMap: DEBUG,
|
|
|
|
indentWidth: 3,
|
|
|
|
outputStyle: DEBUG ? 'expanded' : 'compressed',
|
|
|
|
sourceComments: DEBUG,
|
|
|
|
},
|
|
|
|
main: {
|
|
|
|
files: [
|
|
|
|
{
|
|
|
|
expand: true,
|
|
|
|
cwd: config.sass.base,
|
|
|
|
src: [ '**/*.scss' ],
|
|
|
|
dest: config.dist.css.base,
|
|
|
|
ext: '.css',
|
|
|
|
extDot: 'first',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
postcss: {
|
|
|
|
options: {
|
|
|
|
map: DEBUG,
|
|
|
|
processors: [
|
|
|
|
require('autoprefixer')({ browsers: '> .05%' }), // eslint-disable-line global-require
|
|
|
|
],
|
|
|
|
},
|
|
|
|
main: {
|
|
|
|
src: config.dist.css.all,
|
|
|
|
},
|
|
|
|
},
|
2017-06-21 00:43:49 +00:00
|
|
|
|
2019-06-10 14:42:24 +00:00
|
|
|
clean: {
|
|
|
|
dist: config.dist.base,
|
|
|
|
},
|
|
|
|
|
2017-06-22 13:34:19 +00:00
|
|
|
watch: {
|
|
|
|
grunt: {
|
|
|
|
files: [ 'Gruntfile.js' ],
|
|
|
|
tasks: [ 'build' ],
|
|
|
|
},
|
|
|
|
|
|
|
|
js: {
|
|
|
|
files: [ 'src/**/*.js' ],
|
|
|
|
tasks: [ 'build-js' ],
|
|
|
|
},
|
|
|
|
|
|
|
|
css: {
|
|
|
|
files: [ 'src/**/*.scss' ],
|
|
|
|
tasks: [ 'build-css' ],
|
|
|
|
},
|
|
|
|
},
|
2017-06-21 00:43:49 +00:00
|
|
|
});
|
|
|
|
|
2017-06-22 13:34:19 +00:00
|
|
|
grunt.loadNpmTasks('grunt-contrib-uglify');
|
|
|
|
grunt.loadNpmTasks('grunt-contrib-watch');
|
|
|
|
grunt.loadNpmTasks('grunt-browserify');
|
|
|
|
grunt.loadNpmTasks('grunt-postcss');
|
2019-06-10 14:42:24 +00:00
|
|
|
grunt.loadNpmTasks('grunt-contrib-clean');
|
2017-06-22 13:34:19 +00:00
|
|
|
grunt.loadNpmTasks('grunt-sass');
|
2017-06-21 00:43:49 +00:00
|
|
|
|
2017-06-22 13:34:19 +00:00
|
|
|
grunt.registerTask('build-js', [ 'browserify', 'uglify' ]);
|
|
|
|
grunt.registerTask('build-css', [ 'sass', 'postcss' ]);
|
|
|
|
grunt.registerTask('build', [ 'build-js', 'build-css' ]);
|
2017-08-04 18:23:15 +00:00
|
|
|
grunt.registerTask('develop', [ 'build', 'watch' ]);
|
2017-06-21 00:43:49 +00:00
|
|
|
grunt.registerTask('default', [ 'standards' ]);
|
|
|
|
|
|
|
|
};
|