UNPKG

landers.gulp-helper

Version:

landers.gulp-helper

371 lines (363 loc) 11.3 kB
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); } };