styleguide.config.js 2.88 KB
/**
 * @desc styleguide配置文件
 * @author hm20160509
 * @date 2018/2/8
 */

const path = require('path')
const utils = require('./build/utils')
// const baseWebpackConfig = require('./build/webpack.base.conf')

function resolve(dir) {
  return path.join(__dirname, dir)
}

const sections = [
  {
    name: '概述',
    sections: [
      {
        name: '开发新组件',
        content: './docs/styleguide/develop.md'
      }
    ]
  },
  {
    name: '组件',
    components: function() {
      return [
        './src/views/haomo/components/tables/HmComplexTable.vue',
        './src/views/haomo/components/forms/HmComplexForm.vue',
        './src/views/haomo/components/details/HmComplexDetail.vue',
        './src/views/haomo/components/panel/HmPanel.vue'
      ]
    }
  },
  {
    name: '页面',
    sections: [
      {
        name: '登录'
      },
      {
        name: '重置密码'
      },
      {
        name: '忘记密码'
      }
    ]
  }
]

module.exports = {
  styleguideDir: './dist-styleguide',
  components: 'src/views/haomo/components/**/[A-Z]*.vue',
  ignore: [
    '**/index.vue'
  ],
  showUsage: true,
  defaultExample: true,
  showCode: true,
  sections: sections,
  assetsDir: resolve('src/assets/'),
  require: [
    resolve('./src/main.js')
  ],
  webpackConfig: Object.assign({
    resolve: {
      extensions: ['.js', '.vue', '.json'],
      alias: {
        'vue$': 'vue/dist/vue.esm.js',
        '@': resolve('src')
      }
    },
    module: {
      rules: [
        {
          test: /\.vue$/,
          loader: 'vue-loader'
        },
        {
          test: /\.js$/,
          loader: 'babel-loader?cacheDirectory',
          include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
        },
        {
          test: /\.svg$/,
          loader: 'svg-sprite-loader',
          include: [resolve('src/icons')],
          options: {
            symbolId: 'icon-[name]'
          }
        },
        {
          test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
          loader: 'url-loader',
          exclude: [resolve('src/icons')],
          options: {
            limit: 10000,
            name: utils.assetsPath('img/[name].[hash:7].[ext]')
          }
        },
        {
          test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
          loader: 'url-loader',
          options: {
            limit: 10000,
            name: utils.assetsPath('media/[name].[hash:7].[ext]')
          }
        },
        {
          test: /\.css$/,
          use: ['style-loader', 'css-loader', 'sass-loader']
        },
        {
          test: /\.scss$/,
          use: ['style-loader', 'css-loader', 'sass-loader']
        },
        {
          test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
          loader: 'url-loader',
          options: {
            limit: 10000,
            name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
          }
        }
      ]
    }
  })
}