ソースを参照

optimize build.entry.js

陈嘉涵 8 年 前
コミット
6436d6c816
2 ファイル変更71 行追加59 行削除
  1. 9 3
      build/bin/build-entry.js
  2. 62 56
      src/index.js

+ 9 - 3
build/bin/build-entry.js

@@ -6,19 +6,25 @@ var path = require('path');
 
 var OUTPUT_PATH = path.join(__dirname, '../../src/index.js');
 var IMPORT_TEMPLATE = 'import {{name}} from \'../packages/{{package}}\';';
-var INSTALL_COMPONENT_TEMPLATE = '  Vue.component({{name}}.name, {{name}});';
+var INSTALL_COMPONENT_TEMPLATE = '  {{name}}';
 var MAIN_TEMPLATE = `/* Automatic generated by './build/bin/build-entry.js' */
 
 {{include}}
 import locale from 'element-ui/src/locale';
 
+const components = [
+{{install}}
+];
+
 const install = function(Vue, opts = {}) {
   /* istanbul ignore if */
   if (install.installed) return;
   locale.use(opts.locale);
   locale.i18n(opts.i18n);
 
-{{install}}
+  components.map(component => {
+    Vue.component(component.name, component);
+  });
 
   Vue.use(Loading.directive);
 
@@ -74,7 +80,7 @@ ComponentNames.forEach(name => {
 
 var template = render(MAIN_TEMPLATE, {
   include: includeComponentTemplate.join('\n'),
-  install: installTemplate.join('\n'),
+  install: installTemplate.join(',\n'),
   version: process.env.VERSION || require('../../package.json').version,
   list: listTemplate.join(',\n')
 });

+ 62 - 56
src/index.js

@@ -62,68 +62,74 @@ import Collapse from '../packages/collapse';
 import CollapseItem from '../packages/collapse-item';
 import locale from 'element-ui/src/locale';
 
+const components = [
+  Pagination,
+  Dialog,
+  Autocomplete,
+  Dropdown,
+  DropdownMenu,
+  DropdownItem,
+  Menu,
+  Submenu,
+  MenuItem,
+  MenuItemGroup,
+  Input,
+  InputNumber,
+  Radio,
+  RadioGroup,
+  RadioButton,
+  Checkbox,
+  CheckboxGroup,
+  Switch,
+  Select,
+  Option,
+  OptionGroup,
+  Button,
+  ButtonGroup,
+  Table,
+  TableColumn,
+  DatePicker,
+  TimeSelect,
+  TimePicker,
+  Popover,
+  Tooltip,
+  Breadcrumb,
+  BreadcrumbItem,
+  Form,
+  FormItem,
+  Tabs,
+  TabPane,
+  Tag,
+  Tree,
+  Alert,
+  Slider,
+  Icon,
+  Row,
+  Col,
+  Upload,
+  Progress,
+  Spinner,
+  Badge,
+  Card,
+  Rate,
+  Steps,
+  Step,
+  Carousel,
+  Scrollbar,
+  CarouselItem,
+  Collapse,
+  CollapseItem
+];
+
 const install = function(Vue, opts = {}) {
   /* istanbul ignore if */
   if (install.installed) return;
   locale.use(opts.locale);
   locale.i18n(opts.i18n);
 
-  Vue.component(Pagination.name, Pagination);
-  Vue.component(Dialog.name, Dialog);
-  Vue.component(Autocomplete.name, Autocomplete);
-  Vue.component(Dropdown.name, Dropdown);
-  Vue.component(DropdownMenu.name, DropdownMenu);
-  Vue.component(DropdownItem.name, DropdownItem);
-  Vue.component(Menu.name, Menu);
-  Vue.component(Submenu.name, Submenu);
-  Vue.component(MenuItem.name, MenuItem);
-  Vue.component(MenuItemGroup.name, MenuItemGroup);
-  Vue.component(Input.name, Input);
-  Vue.component(InputNumber.name, InputNumber);
-  Vue.component(Radio.name, Radio);
-  Vue.component(RadioGroup.name, RadioGroup);
-  Vue.component(RadioButton.name, RadioButton);
-  Vue.component(Checkbox.name, Checkbox);
-  Vue.component(CheckboxGroup.name, CheckboxGroup);
-  Vue.component(Switch.name, Switch);
-  Vue.component(Select.name, Select);
-  Vue.component(Option.name, Option);
-  Vue.component(OptionGroup.name, OptionGroup);
-  Vue.component(Button.name, Button);
-  Vue.component(ButtonGroup.name, ButtonGroup);
-  Vue.component(Table.name, Table);
-  Vue.component(TableColumn.name, TableColumn);
-  Vue.component(DatePicker.name, DatePicker);
-  Vue.component(TimeSelect.name, TimeSelect);
-  Vue.component(TimePicker.name, TimePicker);
-  Vue.component(Popover.name, Popover);
-  Vue.component(Tooltip.name, Tooltip);
-  Vue.component(Breadcrumb.name, Breadcrumb);
-  Vue.component(BreadcrumbItem.name, BreadcrumbItem);
-  Vue.component(Form.name, Form);
-  Vue.component(FormItem.name, FormItem);
-  Vue.component(Tabs.name, Tabs);
-  Vue.component(TabPane.name, TabPane);
-  Vue.component(Tag.name, Tag);
-  Vue.component(Tree.name, Tree);
-  Vue.component(Alert.name, Alert);
-  Vue.component(Slider.name, Slider);
-  Vue.component(Icon.name, Icon);
-  Vue.component(Row.name, Row);
-  Vue.component(Col.name, Col);
-  Vue.component(Upload.name, Upload);
-  Vue.component(Progress.name, Progress);
-  Vue.component(Spinner.name, Spinner);
-  Vue.component(Badge.name, Badge);
-  Vue.component(Card.name, Card);
-  Vue.component(Rate.name, Rate);
-  Vue.component(Steps.name, Steps);
-  Vue.component(Step.name, Step);
-  Vue.component(Carousel.name, Carousel);
-  Vue.component(Scrollbar.name, Scrollbar);
-  Vue.component(CarouselItem.name, CarouselItem);
-  Vue.component(Collapse.name, Collapse);
-  Vue.component(CollapseItem.name, CollapseItem);
+  components.map(component => {
+    Vue.component(component.name, component);
+  });
 
   Vue.use(Loading.directive);