Browse Source

chore: 构建逻辑优化

Frans 6 years ago
parent
commit
76d47fd3f6

+ 1 - 1
.babelrc

@@ -3,7 +3,7 @@
     [
       "@babel/preset-env",
       {
-        "modules": "commonjs",
+        "modules": false,
         "targets": {
           "browsers": [
             "Android >= 4",

+ 1 - 1
README-zh_CN.md

@@ -38,7 +38,7 @@
 
 ## 示例
 
-![NutUI Demo](https://img14.360buyimg.com/uba/jfs/t1/32118/11/559/2782/5c3d81ecEbda0c0f1/5f2b637d11817204.png)
+![NutUI Demo](https://img14.360buyimg.com/uba/s260x260_jfs/t1/32118/11/559/2782/5c3d81ecEbda0c0f1/5f2b637d11817204.png)
 
 ## 安装使用
 

+ 3 - 1
build/webpack.base.conf.js

@@ -86,7 +86,9 @@ module.exports = {
     },
     plugins: [
         new webpack.BannerPlugin({
-            banner: "NutUI2(" + config.version + ") - [filebase], [hash], " + moment().format()
+            banner: `NutUI v${config.version} - [filebase], [hash], ${moment().format()}
+(c) 2017-2018 JDC
+Released under the MIT License.`
         }),
         new VueLoaderPlugin()
     ],

+ 1 - 1
build/webpack.demo.dev.conf.js

@@ -26,7 +26,7 @@ module.exports = merge(baseConf, {
     devServer: {
         contentBase: path.resolve(__dirname, 'dist/sites/'),
         index: 'demo.html',
-        compress: true, //gzip压缩
+        compress: true,
         historyApiFallback: true,
         disableHostCheck: true
     }

+ 2 - 1
build/webpack.prod.disperse.conf.js

@@ -68,7 +68,8 @@ module.exports = merge(webpackBaseConf, {
             filename: '[name]/[name].css'
         }),
         new CopyWebpackPlugin([
-            { from: path.join(__dirname, "../src/"), to: path.join(__dirname, "../dist/"), ignore: ['demo.vue','doc.md','config.json','nutui.js'] }
+            {
+                from: path.join(__dirname, "../src/"), to: path.join(__dirname, "../dist/"), ignore: ['demo.vue', 'doc.md', 'config.json', 'nutui.js', '*.spec.js'] }
         ]),
         new CopyWebpackPlugin([
             { from: path.join(__dirname, "../types/"), to: path.join(__dirname, "../dist/types/")}

+ 0 - 2
build/webpack.test.conf.js

@@ -1,5 +1,3 @@
-
-
 const path = require('path');
 const baseConf = require('./webpack.demo.base.conf.js');
 const merge = require('webpack-merge');

+ 1 - 1
docs/start.md

@@ -75,7 +75,7 @@ CDN 引入示例
 </html>
 ```
 
-> 在页面中直接引入,将无法使用 **主题换肤** 等功能。我们推荐使用 *NPM* 或 *YARN* 方式安装,不推荐在页面中直接引入的用法
+> 在页面中直接引入,将无法使用 **主题定制** 等功能。我们推荐使用 *NPM* 或 *YARN* 方式安装,不推荐在页面中直接引入的用法
 
 * 通过 **Vue CLI** 图形化界面安装
 

+ 1 - 7
scripts/createCptTpl.js

@@ -11,12 +11,6 @@ let newCpt = {
     version: '1.0.0'
 };
 
-let rl = readline.createInterface({
-    input: process.stdin,
-    output: process.stdout
-});
-
-
 function init() {
     inquirer.prompt([
         {
@@ -187,7 +181,7 @@ function createDir() {
     }
     copy(path.join(__dirname, './__template__/**.*'), destPath, function (err, file) {
         if (err) {
-            console.log('创建文件夹出错!');
+            console.log('拷贝__template__目录失败!');
         }
         createNew();
     });

+ 3 - 1
sites/demo/app.js

@@ -3,7 +3,7 @@ import "core-js/modules/es6.array.iterator";
 import Vue from 'vue';
 import App from './App.vue';
 import router from './router';
-import './view/mixin.vue';
+import mixin from './view/mixin.js';
 import Conf from '../../src/config.json';
 import NutUI from '../../src/nutui';
 // import en from '../../src/locales/lang/en-US';
@@ -49,6 +49,8 @@ NutUI.install(Vue);
 // Vue.prototype.$i18n = i18n;
 // Vue.use(VueI18n);
 
+Vue.mixin(mixin);
+
 const app = new Vue({
   el: '#demo',
   router,

+ 2 - 5
sites/demo/view/mixin.vue

@@ -1,6 +1,4 @@
-<script>
-import Vue from "vue";
-Vue.mixin({
+export default {
   data() {
     return {
       isMobile: false,
@@ -20,5 +18,4 @@ Vue.mixin({
   mounted() {
     this.isMobile = this.checkIsMob();
   }
-});
-</script>
+};

+ 6 - 6
src/nutui.js

@@ -1,5 +1,7 @@
+import packages from './packages.js';
+
 import { version } from '../package.json';
-import { packages } from './config.json';
+import { packages as pkgList } from './config.json';
 import { locale } from './locales';
 
 const components = {};
@@ -7,14 +9,12 @@ const methods = {};
 const filters = {};
 const directives = {};
 
-packages.map(item => {
-    const cptName = item.name.toLowerCase();
-    const pkg = require('./packages/' + cptName + '/index.js').default;
-    require('./packages/' + cptName + '/' + cptName + '.scss');
+pkgList.map(item => {
+    const pkg = packages[item.name];
     if (!pkg) return;
     if (item.type == 'component') {
         if (pkg.name) {
-            components[item.name] = pkg;
+            components[pkg.name] = pkg;
         } else {
             for (let n in pkg) {
                 components[n] = pkg[n];

+ 127 - 0
src/packages.js

@@ -0,0 +1,127 @@
+import Cell from './packages/cell/index.js';
+import './packages/cell/cell.scss';
+import Dialog from './packages/dialog/index.js';
+import './packages/dialog/dialog.scss';
+import Icon from './packages/icon/index.js';
+import './packages/icon/icon.scss';
+import Toast from './packages/toast/index.js';
+import './packages/toast/toast.scss';
+import ActionSheet from './packages/actionsheet/index.js';
+import './packages/actionsheet/actionsheet.scss';
+import Tab from './packages/tab/index.js';
+import './packages/tab/tab.scss';
+import TabPanel from './packages/tabpanel/index.js';
+import './packages/tabpanel/tabpanel.scss';
+import TabBar from './packages/tabbar/index.js';
+import './packages/tabbar/tabbar.scss';
+import Calendar from './packages/calendar/index.js';
+import './packages/calendar/calendar.scss';
+import DatePicker from './packages/datepicker/index.js';
+import './packages/datepicker/datepicker.scss';
+import NavBar from './packages/navbar/index.js';
+import './packages/navbar/navbar.scss';
+import NoticeBar from './packages/noticebar/index.js';
+import './packages/noticebar/noticebar.scss';
+import Switch from './packages/switch/index.js';
+import './packages/switch/switch.scss';
+import Slider from './packages/slider/index.js';
+import './packages/slider/slider.scss';
+import Range from './packages/range/index.js';
+import './packages/range/range.scss';
+import Picker from './packages/picker/index.js';
+import './packages/picker/picker.scss';
+import Progress from './packages/progress/index.js';
+import './packages/progress/progress.scss';
+import Price from './packages/price/index.js';
+import './packages/price/price.scss';
+import Flex from './packages/flex/index.js';
+import './packages/flex/flex.scss';
+import Col from './packages/col/index.js';
+import './packages/col/col.scss';
+import Row from './packages/row/index.js';
+import './packages/row/row.scss';
+import Steps from './packages/steps/index.js';
+import './packages/steps/steps.scss';
+import Button from './packages/button/index.js';
+import './packages/button/button.scss';
+import Badge from './packages/badge/index.js';
+import './packages/badge/badge.scss';
+import Rate from './packages/rate/index.js';
+import './packages/rate/rate.scss';
+import Swiper from './packages/swiper/index.js';
+import './packages/swiper/swiper.scss';
+import Menu from './packages/menu/index.js';
+import './packages/menu/menu.scss';
+import Stepper from './packages/stepper/index.js';
+import './packages/stepper/stepper.scss';
+import ButtonGroup from './packages/buttongroup/index.js';
+import './packages/buttongroup/buttongroup.scss';
+import SearchBar from './packages/searchbar/index.js';
+import './packages/searchbar/searchbar.scss';
+import ImagePicker from './packages/imagepicker/index.js';
+import './packages/imagepicker/imagepicker.scss';
+import Radio from './packages/radio/index.js';
+import './packages/radio/radio.scss';
+import RadioGroup from './packages/radiogroup/index.js';
+import './packages/radiogroup/radiogroup.scss';
+import CheckBox from './packages/checkbox/index.js';
+import './packages/checkbox/checkbox.scss';
+import CheckBoxGroup from './packages/checkboxgroup/index.js';
+import './packages/checkboxgroup/checkboxgroup.scss';
+import ShortPassword from './packages/shortpassword/index.js';
+import './packages/shortpassword/shortpassword.scss';
+import Skeleton from './packages/skeleton/index.js';
+import './packages/skeleton/skeleton.scss';
+import Scroller from './packages/scroller/index.js';
+import './packages/scroller/scroller.scss';
+import BackTop from './packages/backtop/index.js';
+import './packages/backtop/backtop.scss';
+import CountDown from './packages/countdown/index.js';
+import './packages/countdown/countdown.scss';
+import InfiniteLoading from './packages/infiniteloading/index.js';
+import './packages/infiniteloading/infiniteloading.scss';
+
+
+export default {
+    Cell,
+    Dialog,
+    Icon,
+    Toast,
+    ActionSheet,
+    Tab,
+    TabPanel,
+    TabBar,
+    Calendar,
+    DatePicker,
+    NavBar,
+    NoticeBar,
+    Switch,
+    Slider,
+    Range,
+    Picker,
+    Progress,
+    Price,
+    Flex,
+    Col,
+    Row,
+    Steps,
+    Button,
+    Badge,
+    Rate,
+    Swiper,
+    Menu,
+    Stepper,
+    ButtonGroup,
+    SearchBar,
+    ImagePicker,
+    Radio,
+    RadioGroup,
+    CheckBox,
+    CheckBoxGroup,
+    ShortPassword,
+    Skeleton,
+    Scroller,
+    BackTop,
+    CountDown,
+    InfiniteLoading,
+}