295 lines
6.7 KiB
JavaScript
Executable File
295 lines
6.7 KiB
JavaScript
Executable File
module.exports = function(grunt) {
|
|
'use strict';
|
|
|
|
var customLaunchers = {
|
|
/*
|
|
'SL_IE8': {
|
|
base: 'SauceLabs',
|
|
browserName: 'internet explorer',
|
|
version: '8.0',
|
|
platform: 'windows XP'
|
|
},
|
|
'SL_EDGE': {
|
|
base: 'SauceLabs',
|
|
browserName: 'microsoftedge',
|
|
version: 'latest',
|
|
platform: 'windows 10'
|
|
},
|
|
'SL_SAFARI': {
|
|
base: 'SauceLabs',
|
|
browserName: 'safari',
|
|
version: 'latest',
|
|
platform: 'OS X 10.12'
|
|
},
|
|
*/
|
|
'SL_IE9': {
|
|
base: 'SauceLabs',
|
|
browserName: 'internet explorer',
|
|
version: '9.0',
|
|
platform: 'windows 7'
|
|
},
|
|
'SL_IE10': {
|
|
base: 'SauceLabs',
|
|
browserName: 'internet explorer',
|
|
version: '10.0',
|
|
platform: 'windows 8'
|
|
},
|
|
'SL_IE11': {
|
|
base: 'SauceLabs',
|
|
browserName: 'internet explorer',
|
|
version: '11.0',
|
|
platform: 'windows 8.1'
|
|
},
|
|
'SL_CHROME': {
|
|
base: 'SauceLabs',
|
|
browserName: 'chrome',
|
|
version: 'latest',
|
|
platform: 'windows 8'
|
|
},
|
|
'SL_FIREFOX': {
|
|
base: 'SauceLabs',
|
|
browserName: 'firefox',
|
|
version: 'latest',
|
|
platform: 'windows 8'
|
|
}
|
|
};
|
|
|
|
grunt.initConfig({
|
|
// package File
|
|
pkg: grunt.file.readJSON('package.json'),
|
|
|
|
// bulid source(grunt-build.js).
|
|
build: {
|
|
bs3: {
|
|
input: './src/js/bs3/settings',
|
|
output: './dist/summernote.js'
|
|
},
|
|
bs4: {
|
|
input: './src/js/bs4/settings',
|
|
output: './dist/summernote-bs4.js'
|
|
},
|
|
lite: {
|
|
input: './src/js/lite/settings',
|
|
output: './dist/summernote-lite.js'
|
|
}
|
|
},
|
|
|
|
// for javascript convention.
|
|
eslint: {
|
|
target: [
|
|
'src/**/*.js',
|
|
'plugin/**/*.js',
|
|
'lang/**/*.js',
|
|
'Gruntfile.js',
|
|
'test/**/*.js',
|
|
'!coverage/**/*.js',
|
|
'!test/coverage/**/*.js',
|
|
'build/*.js'
|
|
]
|
|
},
|
|
|
|
// uglify: minify javascript
|
|
uglify: {
|
|
options: {
|
|
banner: '/*! Summernote v<%=pkg.version%> | (c) 2013- Alan Hong and other contributors | MIT license */\n'
|
|
},
|
|
all: {
|
|
files: [
|
|
{ 'dist/summernote.min.js': ['dist/summernote.js'] },
|
|
{ 'dist/summernote-bs4.min.js': ['dist/summernote-bs4.js'] },
|
|
{
|
|
expand: true,
|
|
cwd: 'dist/lang',
|
|
src: '**/*.js',
|
|
dest: 'dist/lang',
|
|
ext: '.min.js'
|
|
},
|
|
{
|
|
expand: true,
|
|
cwd: 'dist/plugin',
|
|
src: '**/*.js',
|
|
dest: 'dist/plugin',
|
|
ext: '.min.js'
|
|
}
|
|
]
|
|
}
|
|
},
|
|
|
|
// recess: minify stylesheets
|
|
recess: {
|
|
dist: {
|
|
options: { compile: true, compress: true },
|
|
files: [
|
|
{
|
|
'dist/summernote.css': ['src/less/summernote.less'],
|
|
'dist/summernote-bs4.css': ['src/less/summernote-bs4.less'],
|
|
'dist/summernote-lite.css': ['src/less/summernote-lite.less']
|
|
|
|
},
|
|
{
|
|
expand: true,
|
|
cwd: 'dist/plugin',
|
|
src: '**/*.css',
|
|
dest: 'dist/plugin',
|
|
ext: '.min.css'
|
|
}
|
|
]
|
|
}
|
|
},
|
|
|
|
// compress: summernote-{{version}}-dist.zip
|
|
compress: {
|
|
main: {
|
|
options: {
|
|
archive: function() {
|
|
return 'dist/summernote-{{version}}-dist.zip'.replace(
|
|
'{{version}}',
|
|
grunt.config('pkg.version')
|
|
);
|
|
}
|
|
},
|
|
files: [{
|
|
expand: true,
|
|
src: [
|
|
'dist/*.js',
|
|
'dist/*.css',
|
|
'dist/font/*'
|
|
]
|
|
}, {
|
|
src: ['plugin/**/*.js', 'plugin/**/*.css', 'lang/**/*.js'],
|
|
dest: 'dist/'
|
|
}]
|
|
}
|
|
},
|
|
|
|
// connect configuration.
|
|
connect: {
|
|
all: {
|
|
options: {
|
|
port: 3000
|
|
}
|
|
}
|
|
},
|
|
|
|
// watch source code change
|
|
watch: {
|
|
less: {
|
|
files: ['src/less/*.less'],
|
|
tasks: ['recess'],
|
|
options: {
|
|
livereload: true
|
|
}
|
|
},
|
|
script: {
|
|
files: ['src/js/**/*.js', 'test/unit/**/*.js'],
|
|
tasks: ['lint', 'build', 'karma:all'],
|
|
options: {
|
|
livereload: true
|
|
}
|
|
}
|
|
},
|
|
|
|
karma: {
|
|
options: {
|
|
configFile: './karma.conf.js'
|
|
},
|
|
watch: {
|
|
background: false,
|
|
singleRun: false
|
|
},
|
|
all: {
|
|
// Chrome, ChromeCanary, Firefox, Opera, Safari, PhantomJS, IE
|
|
singleRun: true,
|
|
browsers: ['PhantomJS']
|
|
},
|
|
dist: {
|
|
singleRun: true,
|
|
browsers: ['PhantomJS']
|
|
},
|
|
travis: {
|
|
singleRun: true,
|
|
browsers: ['PhantomJS'],
|
|
reporters: ['dots', 'coverage']
|
|
},
|
|
saucelabs: {
|
|
reporters: ['saucelabs'],
|
|
sauceLabs: {
|
|
testName: 'unit tests for summernote',
|
|
startConnect: false,
|
|
tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER,
|
|
build: process.env.TRAVIS_BUILD_NUMBER,
|
|
tags: [process.env.TRAVIS_BRANCH, process.env.TRAVIS_PULL_REQUEST]
|
|
},
|
|
captureTimeout: 120000,
|
|
customLaunchers: customLaunchers,
|
|
browsers: Object.keys(customLaunchers),
|
|
singleRun: true
|
|
}
|
|
},
|
|
|
|
coveralls: {
|
|
options: {
|
|
force: false
|
|
},
|
|
travis: {
|
|
src: 'coverage/**/lcov.info'
|
|
}
|
|
},
|
|
clean: {
|
|
dist: ['dist/**/*']
|
|
},
|
|
copy: {
|
|
dist: {
|
|
files: [
|
|
{ src: 'lang/*', dest: 'dist/' },
|
|
{ expand: true, cwd: 'src/icons/dist/font/', src: ['**', '!*.html'], dest: 'dist/font/' }
|
|
]
|
|
}
|
|
},
|
|
webfont: {
|
|
icons: {
|
|
src: 'src/icons/*.svg',
|
|
dest: 'src/icons/dist/font',
|
|
destCss: 'src/icons/dist/',
|
|
options: {
|
|
font: 'summernote',
|
|
relativeFontPath: './font/',
|
|
stylesheet: 'less',
|
|
template: 'src/icons/templates/summernote.css'
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
// load all tasks from the grunt plugins used in this file
|
|
require('load-grunt-tasks')(grunt);
|
|
|
|
// load all grunts/*.js
|
|
grunt.loadTasks('grunts');
|
|
|
|
// server: run server for development
|
|
grunt.registerTask('server', ['connect', 'watch']);
|
|
|
|
// lint
|
|
grunt.registerTask('lint', ['eslint']);
|
|
|
|
// test: unit test on test folder
|
|
grunt.registerTask('test', ['lint', 'karma:watch']);
|
|
|
|
// test: unit test on travis
|
|
grunt.registerTask('test-travis', ['lint', 'karma:travis']);
|
|
|
|
// test: saucelabs test
|
|
grunt.registerTask('saucelabs-test', ['karma:saucelabs']);
|
|
|
|
// dist: make dist files
|
|
grunt.registerTask('dist', [
|
|
'clean:dist',
|
|
'build', 'webfont', 'lint', 'karma:dist',
|
|
'copy:dist', 'uglify', 'recess', 'compress'
|
|
]);
|
|
|
|
// default: server
|
|
grunt.registerTask('default', ['server']);
|
|
};
|