Browse Source

chore: 修改单元测试配置

Frans 6 years ago
parent
commit
5b4f1cf39a
4 changed files with 125 additions and 117 deletions
  1. 3 3
      .babelrc.js
  2. 1 9
      build/webpack.base.conf.js
  3. 30 13
      build/webpack.test.conf.js
  4. 91 92
      src/nutui.js

+ 3 - 3
.babelrc.js

@@ -22,9 +22,9 @@ const plugins = [
 ];
 
 
-if (process.env["NODE_ENV"] === "test") {
-    presets[0][1].modules = "commonjs";
-}
+// if (process.env["NODE_ENV"] === "test") {
+//     presets[0][1].modules = "commonjs";
+// }
 
 // if (process.env["NODE_ENV"] === "production" && process.env["PROD_TYPE"] === "disp") {
 //     presets[0][1].useBuiltIns = false;

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

@@ -19,15 +19,7 @@ module.exports = {
     },
     module: {
         rules: [
-            test ? {
-                test: /\.(js|ts)/,
-                include: path.resolve('src'), // instrument only testing sources with Istanbul, after ts-loader runs
-                loader: 'istanbul-instrumenter-loader'
-            }: {},
-            test ? { test: /\.css$/, use: [{loader: 'style!css'}] } : {},
-            test ? { test: /\.scss$/, loader: 'style-loader!css-loader!sass-loader' } : {},
-            test ? { test: /\.scss$/, use: [{loader: 'sass-loader', options:{data: `@import "./src/styles/index.scss"; `,} }]} : {},
-            !test ?{
+            !test ? {
                 test: /\.(sa|sc|c)ss$/,
                 use: [
                     isDev ? 'style-loader' : MiniCssExtractPlugin.loader,

+ 30 - 13
build/webpack.test.conf.js

@@ -1,18 +1,35 @@
-const path = require('path');
-const baseConf = require('./webpack.demo.base.conf.js');
+
+const prodConf = require('./webpack.prod.conf.js');
 const merge = require('webpack-merge');
 
 
-module.exports = merge(baseConf, {
-    mode: 'development',
-    output: {
-        publicPath: '/',
-    },
-    
-    devServer: {
-        contentBase: path.resolve(__dirname, 'dist'),
-        compress: true,
-        historyApiFallback: true,
+module.exports = merge(prodConf, {
+    module: {
+        rules: [
+            {
+                test: /\.(js|ts)/,
+                use: {
+                    loader: 'istanbul-instrumenter-loader',
+                    options: { esModules: true }
+                }
+            },
+            {
+                test: /\.css$/,
+                use: [{ loader: 'style!css' }]
+            },
+            {
+                test: /\.scss$/,
+                loader: 'style-loader!css-loader!sass-loader'
+            },
+            {
+                test: /\.scss$/,
+                use: [{
+                    loader: 'sass-loader',
+                    options: { data: `@import "./src/styles/index.scss"; `, }
+                }]
+            },
+        ],
     },
-    externals:  [require('webpack-node-externals')()]
+    devtool: 'inline-cheap-module-source-map',
+    externals: [require('webpack-node-externals')()]
 });

+ 91 - 92
src/nutui.js

@@ -1,7 +1,6 @@
 import { version } from '../package.json';
 import { packages as pkgList } from './config.json';
 import { locale } from './locales';
-
 import Cell from './packages/cell/index.js';
 import './packages/cell/cell.scss';
 import Dialog from './packages/dialog/index.js';
@@ -86,121 +85,121 @@ import InfiniteLoading from './packages/infiniteloading/index.js';
 import './packages/infiniteloading/infiniteloading.scss';
 
 const packages = {
-    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,
+  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,
 };
 
 const components = {};
 const methods = {};
 const filters = {};
 const directives = {};
-
 pkgList.map(item => {
-    const pkg = packages[item.name];
-    if (!pkg) return;
-    if (item.type == 'component') {
-        if (pkg.name) {
-            components[pkg.name] = pkg;
-        } else {
-            for (let n in pkg) {
-                components[n] = pkg[n];
-            }
-        }
-    } else if (item.type == 'method') {
-        methods[item.name] = pkg;
-    } else if (item.type == 'filter') {
-        filters[item.name] = pkg;
-    } else if (item.type == 'directive') {
-        directives[item.name] = pkg;
+  const pkg = packages[item.name];
+  if (!pkg) return;
+
+  if (item.type == 'component') {
+    if (pkg.name) {
+      components[pkg.name] = pkg;
+    } else {
+      for (let n in pkg) {
+        components[n] = pkg[n];
+      }
     }
+  } else if (item.type == 'method') {
+    methods[item.name] = pkg;
+  } else if (item.type == 'filter') {
+    filters[item.name] = pkg;
+  } else if (item.type == 'directive') {
+    directives[item.name] = pkg;
+  }
 });
 
 const install = function (Vue, opts = {}) {
-    if (install.installed) return;
+  if (install.installed) return;
 
-    if(opts.locale) {
-        Vue.config.lang = opts.locale;
-    }
-    
-    if(opts.lang) locale(Vue.config.lang, opts.lang);
+  if (opts.locale) {
+    Vue.config.lang = opts.locale;
+  }
+
+  if (opts.lang) locale(Vue.config.lang, opts.lang);
 
-    for (let cptName in methods) {
-        if (Array.isArray(methods[cptName])){
-            Vue.prototype['$' + cptName.toLowerCase()] = methods[cptName][0];
-            Vue.component(methods[cptName][1].name, methods[cptName][1]);
-        }else{
-            Vue.prototype['$' + cptName.toLowerCase()] = methods[cptName];
-        }
+  for (let cptName in methods) {
+    if (Array.isArray(methods[cptName])) {
+      Vue.prototype['$' + cptName.toLowerCase()] = methods[cptName][0];
+      Vue.component(methods[cptName][1].name, methods[cptName][1]);
+    } else {
+      Vue.prototype['$' + cptName.toLowerCase()] = methods[cptName];
     }
+  }
 
-    for (let cptName in components) {
-        if (components[cptName] && components[cptName].name) {
-            Vue.component(components[cptName].name, components[cptName]);
-        }
+  for (let cptName in components) {
+    if (components[cptName] && components[cptName].name) {
+      Vue.component(components[cptName].name, components[cptName]);
     }
+  }
 
-    for (let cptName in filters) {
-        if (filters[cptName] && filters[cptName].name) {
-            Vue.filter(cptName, filters[cptName]);
-        }
+  for (let cptName in filters) {
+    if (filters[cptName] && filters[cptName].name) {
+      Vue.filter(cptName, filters[cptName]);
     }
+  }
 
-    for (let cptName in directives) {
-        if (directives[cptName] && directives[cptName].name) {
-            Vue.directive(directives[cptName].name, directives[cptName]);
-        }
+  for (let cptName in directives) {
+    if (directives[cptName] && directives[cptName].name) {
+      Vue.directive(directives[cptName].name, directives[cptName]);
     }
+  }
 };
 
 if (typeof window !== 'undefined' && window.Vue) {
-    install(window.Vue);
+  install(window.Vue);
 }
 
 export default {
-    version,
-    locale,
-    install,
-    ...components,
-    ...filters,
-    ...directives,
-    ...methods
+  version,
+  locale,
+  install,
+  ...components,
+  ...filters,
+  ...directives,
+  ...methods
 };