202 lines
6.0 KiB
JavaScript
202 lines
6.0 KiB
JavaScript
|
module.exports = function(grunt) {
|
||
|
// Project configuration.
|
||
|
grunt
|
||
|
.initConfig({
|
||
|
pkg : grunt.file.readJSON('package.json'),
|
||
|
uglify : {
|
||
|
options : {
|
||
|
beautify : false,
|
||
|
keepFArgs: false,
|
||
|
keepFName: false
|
||
|
},
|
||
|
base : {
|
||
|
files : {
|
||
|
'htdocs/simulator.min.js' : [
|
||
|
'js-temp/ts/basecomponent.js',
|
||
|
'js-temp/ts/simulator.js',
|
||
|
'js-temp/ts/tristate.js',
|
||
|
'js-temp/ts/wire.js',
|
||
|
'js-temp/ts/polyfill.js',
|
||
|
'js-temp/ts/helper.js'
|
||
|
]
|
||
|
}
|
||
|
},
|
||
|
components : {
|
||
|
files: [{
|
||
|
cwd: 'js-temp/components/',
|
||
|
src: '*.js',
|
||
|
expand: true,
|
||
|
dest: 'htdocs/components/',
|
||
|
rename: function (dst, src) {
|
||
|
return dst + '/' + src.replace('.js', '.min.js');
|
||
|
}
|
||
|
}],
|
||
|
},
|
||
|
plugins : {
|
||
|
files: [{
|
||
|
cwd: 'js-temp/plugins/',
|
||
|
src: './**/*.js',
|
||
|
expand: true,
|
||
|
dest: 'htdocs/components/',
|
||
|
rename: function (dst, src) {
|
||
|
return dst + src.replace('.js', '.min.js').replace(/\.\/.*\//, '/');
|
||
|
}
|
||
|
}],
|
||
|
}
|
||
|
},
|
||
|
ts: {
|
||
|
base: {
|
||
|
tsconfig: './tsconfig.json',
|
||
|
src: ["ts/*.ts", "!components/*.ts", "!node_modules/**", "!plugins/**/*.ts", "!decl/**/*.ts"],
|
||
|
options: {
|
||
|
declaration: true,
|
||
|
declarationDir: "decl"
|
||
|
}
|
||
|
},
|
||
|
components: {
|
||
|
tsconfig: './tsconfig.json',
|
||
|
src: ["!ts/*.ts", "components/*.ts", "!node_modules/**", "!plugins/**/*.ts", "decl/ts/*.ts", "!decl/components/*.ts"],
|
||
|
options: {
|
||
|
declaration: true,
|
||
|
declarationDir: "decl"
|
||
|
}
|
||
|
},
|
||
|
plugins: {
|
||
|
tsconfig: './tsconfig.json',
|
||
|
src: ["plugins/**/*.ts", "!node_modules/**", "!components/*.ts", "!ts/*.ts", "decl/**/*.ts"],
|
||
|
}
|
||
|
},
|
||
|
svgmin: {
|
||
|
options: {
|
||
|
plugins: [
|
||
|
{ removeViewBox: true },
|
||
|
{ removeUselessStrokeAndFill: true },
|
||
|
{ removeDoctype: false },
|
||
|
{ cleanupIDs: false },
|
||
|
{ collapseGroups: false },
|
||
|
{ removeAttrs: [] },
|
||
|
{ mergePaths: false },
|
||
|
{ removeEmptyText: false },
|
||
|
{ convertShapeToPath: false },
|
||
|
]
|
||
|
},
|
||
|
components: {
|
||
|
files: [{
|
||
|
cwd: 'components/',
|
||
|
src: '*.svg',
|
||
|
expand: true,
|
||
|
dest: 'htdocs/components/',
|
||
|
rename: function (dst, src) {
|
||
|
return dst + '/' + src.replace('.js', '.min.js');
|
||
|
}
|
||
|
}]
|
||
|
},
|
||
|
plugins : {
|
||
|
files: [{
|
||
|
cwd: 'plugins/',
|
||
|
src: '**/*.svg',
|
||
|
expand: true,
|
||
|
dest: 'htdocs/components/',
|
||
|
rename: function (dst, src) {
|
||
|
return dst + src.replace(/^.*\//, '\/');
|
||
|
}
|
||
|
}],
|
||
|
}
|
||
|
},
|
||
|
watch : {
|
||
|
tsbase : {
|
||
|
files : [ 'ts/*.ts' ],
|
||
|
tasks : [ 'ts:base' ]
|
||
|
},
|
||
|
tscomponents : {
|
||
|
files : [ 'ts/*.ts', 'components/*.ts' ],
|
||
|
tasks : [ 'ts:components' ]
|
||
|
},
|
||
|
tsplugins : {
|
||
|
files : [ 'plugins/**/*.ts' ],
|
||
|
tasks : [ 'ts:plugins' ]
|
||
|
},
|
||
|
jsbase : {
|
||
|
files : [ 'js-temp/*.js' ],
|
||
|
tasks : [ 'uglify:base' ]
|
||
|
},
|
||
|
jscomponents : {
|
||
|
files : [ 'js-temp/components/*.js' ],
|
||
|
tasks : [ 'newer:uglify:components' ]
|
||
|
},
|
||
|
jsplugins : {
|
||
|
files : [ 'js-temp/plugins/**/*.js' ],
|
||
|
tasks : [ 'newer:uglify:plugins' ]
|
||
|
},
|
||
|
componentssvg : {
|
||
|
files : [ 'components/*.svg' ],
|
||
|
tasks : [ 'newer:svgmin:components' ]
|
||
|
},
|
||
|
pluginsvg : {
|
||
|
files : [ 'plugins/**/*.svg' ],
|
||
|
tasks : [ 'newer:svgmin:plugins' ]
|
||
|
},
|
||
|
lessbase : {
|
||
|
files : [ 'less/*.less' ],
|
||
|
tasks : [ 'less:base' ]
|
||
|
},
|
||
|
lesscomponents : {
|
||
|
files : [ 'components/*.less'],
|
||
|
tasks : [ 'less:components' ]
|
||
|
},
|
||
|
lessplugins : {
|
||
|
files : [ 'plugins/**/*.less'],
|
||
|
tasks : [ 'less:plugins' ]
|
||
|
},
|
||
|
},
|
||
|
less : {
|
||
|
base : {
|
||
|
options : {
|
||
|
"strictImports" : true,
|
||
|
"compress" : true
|
||
|
},
|
||
|
files : {
|
||
|
"htdocs/css/default.css" : "less/default.less",
|
||
|
"htdocs/css/light.css" : "less/light.less",
|
||
|
},
|
||
|
},
|
||
|
components : {
|
||
|
options : {
|
||
|
"strictImports" : true,
|
||
|
"compress" : true
|
||
|
},
|
||
|
files : {
|
||
|
"htdocs/components/breadboard.css" : "components/breadboard.less"
|
||
|
},
|
||
|
},
|
||
|
plugins : {
|
||
|
options : {
|
||
|
"strictImports" : true,
|
||
|
"compress" : true
|
||
|
},
|
||
|
files: [{
|
||
|
cwd: 'plugins/',
|
||
|
src: '**/*.less',
|
||
|
expand: true,
|
||
|
dest: 'htdocs/components/',
|
||
|
/* rename: function (dst, src) {
|
||
|
return dst + src.replace(/^.*\//, '\/');
|
||
|
}*/
|
||
|
}],
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
grunt.loadNpmTasks('grunt-contrib-uglify');
|
||
|
grunt.loadNpmTasks('grunt-contrib-watch');
|
||
|
grunt.loadNpmTasks('grunt-contrib-less');
|
||
|
grunt.loadNpmTasks('grunt-svgmin');
|
||
|
grunt.loadNpmTasks('grunt-newer');
|
||
|
grunt.loadNpmTasks('grunt-ts');
|
||
|
|
||
|
// Default task(s).
|
||
|
grunt.registerTask('default', [ 'ts', 'less', 'uglify', 'svgmin', 'watch' ]);
|
||
|
grunt.registerTask('release', [ 'ts', 'less', 'uglify', 'svgmin' ]);
|
||
|
|
||
|
};
|