landers.gulp-helper
Version:
landers.gulp-helper
371 lines (363 loc) • 11.3 kB
JavaScript
let log = require('./log');
let fs = require('fs');
let Packages = {
"js-md5": {
js: 'js-md5/build/md5.min.js'
},
'JSON': {
js: 'JSON/json2.js'
},
'lodash': {
js: 'lodash/lodash.min.js'
},
'jquery': {
js: 'jquery/dist/jquery.js'
},
'jquery-mousewheel': {
js: 'jquery-mousewheel/jquery.mousewheel.js'
},
'malihu-custom-scrollbar-plugin': {
js: 'malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js',
css: 'malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css'
},
'protip': {
js: 'protip/protip.min.js',
css: 'protip/protip.min.css'
},
'animate.css': {
css: 'animate.css/animate.min.css'
},
'bootstrap': {
js: 'bootstrap/dist/js/bootstrap.min.js',
css: 'bootstrap/dist/css/bootstrap.min.css',
font: 'bootstrap/dist/fonts/*.*'
},
'bootstrap-daterangepicker': {
js: 'bootstrap-daterangepicker/daterangepicker.js',
css: 'bootstrap-daterangepicker/daterangepicker.css'
},
'eonasdan-bootstrap-datetimepicker': {
js: 'eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js',
css: 'eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css',
},
'moment': {
js: 'moment/min/moment-with-locales.min.js'
},
'laravel-echo': {
js: 'laravel-echo/dist/echo.js'
},
'socket.io-client': {
js: 'socket.io-client/dist/socket.io.js'
},
'landers-base': {
css: 'landers-base/dist/landers-base.css'
},
'landers-bootstrap-reset': {
css: 'landers-bootstrap-reset/dist/landers-bootstrap-reset.css'
},
'landers-data-list': {
css: 'landers-data-list/dist/landers-data-list.css'
},
'landers-enums': {
css: 'landers-enums/dist/landers-enums.css'
},
'landers-font-icons': {
css: 'landers-font-icons/dist/css/landers-font-icons.css'
},
'landers-form-table': {
css: 'landers-form-table/dist/landers-form-table.css'
},
'landers-ichecks': {
css: 'landers-ichecks/dist/landers-ichecks.css'
},
'landers-reset': {
css: 'landers-reset/dist/landers-reset.css'
},
'landers-xlist': {
css: 'landers-xlist/dist/landers-xlist.css'
},
'landers.prototype': {
js: 'landers.prototype/dist/landers.prototype.js'
},
'landers.jquery': {
js: 'landers.jquery/dist/landers.jquery.js'
},
'landers-animate': {
js: 'landers-animate/dist/landers-animate.js',
css: 'landers-animate/dist/landers-animate.css'
},
'landers.loader': {
js: 'landers.loader/dist/landers.loader.js'
},
'landers.response': {
js: 'landers.response/dist/landers.response.js'
},
'landers.css': {
js: 'landers.css/dist/landers.css.js'
},
'landers.env': {
js: 'landers.env/dist/landers.env.js'
},
'landers.url': {
js: 'landers.url/dist/landers.url.js'
},
'landers.flat': {
js: 'landers.flat/dist/landers.flat.js'
},
'landers.parse-arguments': {
js: 'landers.parse-arguments/dist/landers.parse-arguments.js'
},
'landers.path': {
js: 'landers.path/dist/landers.path.js'
},
'landers.iframe': {
js: 'landers.iframe/dist/landers.iframe.js'
},
'landers.image': {
js: 'landers.image/dist/landers.image.js'
},
'landers.tab': {
js: 'landers.tab/dist/landers.tab.js',
css: 'landers.tab/dist/landers.tab.css'
},
'landers.dialog': {
js: 'landers.dialog/dist/landers.dialog.js',
css: [
'landers.dialog/src/skins/black.css',
'landers.dialog/src/skins/ulan.css'
],
image: 'landers.dialog/src/skins'
},
'landers.msgbox': {
js: 'landers.msgbox/dist/landers.msgbox.js',
css: 'landers.msgbox/dist/landers.msgbox.css'
},
'landers.slider': {
js: 'landers.slider/dist/landers.slider.js',
css: 'landers.slider/dist/landers.slider.css'
},
'landers.jquery.top-response': {
js: 'landers.jquery.top-response/dist/landers.jquery.top-response.js',
css: 'landers.jquery.top-response/dist/landers.jquery.top-response.css'
},
'landers.upload': {
js: 'landers.upload/dist/landers.upload.js',
css: 'landers.upload/dist/landers.upload.css'
},
'landers.select': {
js: 'landers.select/dist/landers.select.js'
},
'landers.treeselect': {
js: 'landers.treeselect/dist/landers.treeselect.js'
},
'landers.angular': {
js: 'landers.angular/dist/landers.angular.js',
css: 'landers.angular/dist/landers.angular.css'
},
'angular': {
js: 'angular/angular.js'
},
'angular-ui-router': {
js: 'angular-ui-router/release/angular-ui-router.js'
},
'oclazyload': {
js: [
'oclazyload/dist/ocLazyLoad.require.js',
'oclazyload/dist/ocLazyLoad.js'
]
},
'angular-animate': {
js: 'angular-animate/angular-animate.js'
},
'angular-cookie': {
js: 'angular-cookie/angular-cookie.js'
},
'angular-cookies': {
js: 'angular-cookies/angular-cookies.min.js'
},
'angular-messages': {
js: 'angular-messages/angular-messages.js'
},
'angular-paging': {
js: 'angular-paging/dist/paging.js'
},
'angular-sanitize': {
js: 'angular-sanitize/angular-sanitize.js'
},
'angular-touch': {
js: 'angular-touch/angular-touch.js'
},
'angular-websocket': {
js: 'angular-websocket/dist/angular-websocket.min.js'
},
'angular-ui-switch': {
js: 'angular-ui-switch/angular-ui-switch.js',
css: 'angular-ui-switch/angular-ui-switch.min.css'
},
'ng-tags-input': {
js: 'ng-tags-input/build/ng-tags-input.js',
css: 'ng-tags-input/build/ng-tags-input.css'
},
'angular-loading-bar': {
js: 'angular-loading-bar/build/loading-bar.js',
css: 'angular-loading-bar/build/loading-bar.css'
},
'@cgross/angular-notify': {
js: '@cgross/angular-notify/angular-notify.js',
css: '@cgross/angular-notify/angular-notify.css'
},
'angular-highlightjs': {
js: 'angular-highlightjs/build/angular-highlightjs.js'
},
'angular-marked': {
js: 'angular-marked/dist/angular-marked.js'
},
'bootstrap-markdown': {
js: 'bootstrap-markdown/js/bootstrap-markdown.js',
css: 'bootstrap-markdown/css/bootstrap-markdown.min.css'
},
'highlight.js': {
js: 'highlight.js/lib/highlight.js',
css: 'highlight.js/styles/*.css',
},
'highlightjs-line-numbers.js': {
js: 'highlightjs-line-numbers.js/dist/highlightjs-line-numbers.min.js'
},
'marked': {
js: 'marked/marked.min.js',
},
'angular-markdown-editor': {
js: 'angular-markdown-editor/src/angular-markdown-editor.js',
css: 'angular-markdown-editor/styles/angular-markdown-editor.css'
},
'clipboard': {
js: 'clipboard/dist/clipboard.js'
},
'ngclipboard': {
js: 'ngclipboard/dist/ngclipboard.min.js'
},
'landers.browser': {
js: 'landers.browser/dist/landers.browser.js'
},
'landers.console': {
js: 'landers.console/dist/landers.console.js'
},
'landers.form': {
js: 'landers.form/dist/landers.form.js'
},
'landers.utils': {
js: 'landers.utils/dist/landers.utils.js'
},
'landers.cookie': {
js: 'landers.cookie/dist/landers.cookie.js'
},
'landers.helpers': {
js: 'landers.helpers/dist/landers.helpers.js'
},
'landers.ajax': {
js: 'landers.ajax/dist/landers.ajax.js'
},
'skplayer': {
js: 'skplayer/dist/skPlayer.min.js'
},
'echarts': {
js: [
'echarts/dist/echarts.min.js',
'echarts/map/js/china.js'
]
},
'angular-echarts': {
js: 'angular-echarts/dist/angular-echarts.js'
},
'angular-http-auth': {
js: 'angular-http-auth/src/http-auth-interceptor.js'
},
'angular-tree-control': {
js: 'angular-tree-control/angular-tree-control.js',
font: 'angular-tree-control/fonts/*.*',
image: 'angular-tree-control/images/*.*'
},
'select2': {
js: 'select2/dist/js/select2.js',
css: 'select2/dist/css/select2.css'
},
'angular-ui-select2': {
js: 'angular-ui-select2/src/select2.js'
},
'filesize': {
js: 'filesize/lib/filesize.js'
},
'angular-translate': {
js: 'angular-translate/dist/angular-translate.min.js'
},
'simplemde': {
js: 'simplemde/dist/simplemde.min.js',
css: 'simplemde/dist/simplemde.min.css'
}
};
module.exports = {
providerPath: function(provider){
provider = provider || 'node';
return {
'node': 'node_modules',
'bower': 'bower_components'
}[provider];
},
setTags: function(data) {
for (let name in data) {
if (!Packages[name]) {
log.exception('Packages中不存在【' + name + '】');
}
Packages[name].tags = data[name];
}
},
getPaths: function(suffix, packages){
let base_path = this.providerPath();
let paths = packages.map(function(package){
let obj = Packages[package];
if (obj) {
let paths = obj[suffix];
if (paths) {
paths = (typeof paths == 'string') ? [paths] : paths;
return paths.map(function(path){
return ['.', base_path, path].join('/');
});
} else {
return null;
}
} else {
return [
'.', base_path, package, 'dist', package + '.' + suffix
].join('/');
}
}).flatten().unique();
return paths.filter(function(path){
return !!path;
});
},
getPath: function(package_name, sub_path){
let base_path = this.providerPath();
return ['.', base_path, package_name].join('/');
},
getSrcFiles: function(suffix, packages) {
var other_packages = packages.filter(function(package){
return package.indexOf('landers') === -1;
});
var landers_pageages = packages.filter(function(package){
return package.indexOf('landers') === 0;
});
var other_result = this.getPaths(suffix, other_packages);
var landers_result = landers_pageages.map(function(package){
var base_path = './node_modules/' + package;
return [
base_path + '/lib' + `/**/*.${suffix}`,
base_path + '/src' + `/${suffix}/main.${suffix}`,
base_path + '/src' + `/**/!(main).${suffix}`
];
});
return other_result.concat(landers_result).unique().flatten().filterFalse();
},
extendPackages: function(data){
Packages = Object.extend(Packages, data);
}
};