webpack.docs.config.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. const path = require('path')
  2. const HtmlWebpackPlugin = require('html-webpack-plugin')
  3. const InlineManifestWebpackPlugin = require('inline-manifest-webpack-plugin')
  4. const webpack = require('webpack')
  5. module.exports = {
  6. entry: {
  7. main: 'docs/main.js',
  8. libs: [
  9. 'vue',
  10. 'vue-router',
  11. 'prismjs',
  12. 'vue-material'
  13. ],
  14. resource: [
  15. 'prismjs/themes/prism-tomorrow.css',
  16. 'docs/fonts/iconfont.css'
  17. ],
  18. vendor: [
  19. 'docs/components/App.vue',
  20. 'docs/components/CateView.vue',
  21. 'docs/components/DocPreview.vue',
  22. 'docs/components/Navigator.vue',
  23. 'docs/components/RootFrame.vue'
  24. ]
  25. },
  26. output: {
  27. path: path.resolve(__dirname, '../dist'),
  28. filename: '[name].[hash:8].bundle.js',
  29. chunkFilename: '[name].[chunkhash:8].js'
  30. },
  31. module: {
  32. rules: [
  33. {
  34. test: /\.vue$/,
  35. use: ['vue-loader', 'eslint-loader'],
  36. exclude: [/_cache/]
  37. },
  38. {
  39. test: /\.js$/,
  40. use: ['babel-loader', 'eslint-loader'],
  41. exclude: [/node_modules/, /md/]
  42. },
  43. {
  44. test: /\.md$/,
  45. use: ['vue-markdown-loader'],
  46. exclude: [/node_modules/]
  47. },
  48. {
  49. test: /\.css$/,
  50. use: ['style-loader', 'css-loader']
  51. },
  52. {
  53. test: /\.styl$/,
  54. use: ['style-loader', 'css-loader', 'stylus-loader']
  55. },
  56. {
  57. test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
  58. use: ['url-loader']
  59. },
  60. {
  61. test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
  62. use: ['url-loader']
  63. }
  64. ]
  65. },
  66. resolve: {
  67. alias: {
  68. docs: path.resolve(__dirname, '../docs')
  69. }
  70. },
  71. plugins: [
  72. new webpack.HashedModuleIdsPlugin(),
  73. new HtmlWebpackPlugin({
  74. template: path.resolve(__dirname, '../docs/template/index.html'),
  75. chunks: ['libs', 'vendor', 'resource', 'main']
  76. }),
  77. new webpack.optimize.CommonsChunkPlugin({
  78. names: ['vendor', 'libs', 'resource', 'manifest'],
  79. minChunks: Infinity
  80. }),
  81. new InlineManifestWebpackPlugin({
  82. name: 'webpackManifest'
  83. })
  84. ]
  85. }