customBuildTpl.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // import 'babel-polyfill';
  2. const config = require('../custom.json');
  3. const components = {};
  4. const methods = {};
  5. const filters = {};
  6. const directives = {};
  7. config.packages.map(item=>{
  8. /* const pkg = require('./package/' + (item.name.toLowerCase()) + '/index.js').default;*/
  9. const loName = item.name.toLowerCase();
  10. if (!pkg[loName]) return;
  11. if (item.type =='component'){
  12. if (pkg[loName].name) {
  13. components[item.name] = pkg[loName];
  14. } else {
  15. for (let n in pkg[loName]) {
  16. components[n] = pkg[loName][n];
  17. }
  18. }
  19. } else if (item.type == 'method'){
  20. methods[item.name] = pkg[loName];
  21. } else if (item.type == 'filter') {
  22. filters[item.name] = pkg[loName];
  23. } else if (item.type == 'directive') {
  24. directives[item.name] = pkg[loName];
  25. }
  26. });
  27. const install = function(Vue, opts = {}) {
  28. if (install.installed) return;
  29. for (let cptName in methods){
  30. Vue.prototype['$' + cptName.toLowerCase()] = methods[cptName];
  31. }
  32. for (let cptName in components) {
  33. if (components[cptName] && components[cptName].name) {
  34. Vue.component(components[cptName].name, components[cptName]);
  35. }
  36. }
  37. for (let cptName in filters) {
  38. if (filters[cptName] && filters[cptName].name) {
  39. Vue.filter(filters[cptName].name, filters[cptName]);
  40. }
  41. }
  42. for (let cptName in directives) {
  43. if (directives[cptName] && directives[cptName].name) {
  44. Vue.directive(directives[cptName].name, directives[cptName]);
  45. }
  46. }
  47. /* Vue.prototype.$dialog = components['Dialog'];
  48. Vue.prototype.$toast = components['Toast'];
  49. Vue.prototype.$loading = components['Loading']; */
  50. };
  51. if (typeof window !== 'undefined' && window.Vue) {
  52. install(window.Vue);
  53. }
  54. const API = Object.assign({
  55. //version: version,
  56. install
  57. },components,filters,directives,methods);
  58. export default API;