1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- const path = require('path')
- const HtmlWebpackPlugin = require('html-webpack-plugin')
- const InlineManifestWebpackPlugin = require('inline-manifest-webpack-plugin')
- const webpack = require('webpack')
- module.exports = {
- entry: {
- main: 'docs/main.js',
- libs: [
- 'vue',
- 'vue-router',
- 'prismjs',
- 'vue-material'
- ],
- resource: [
- 'prismjs/themes/prism-tomorrow.css',
- 'docs/fonts/iconfont.css'
- ],
- vendor: [
- 'docs/components/App.vue',
- 'docs/components/CateView.vue',
- 'docs/components/DocPreview.vue',
- 'docs/components/Navigator.vue',
- 'docs/components/RootFrame.vue'
- ]
- },
- output: {
- path: path.resolve(__dirname, '../dist'),
- filename: '[name].[hash:8].bundle.js',
- chunkFilename: '[name].[chunkhash:8].js'
- },
- module: {
- rules: [
- {
- test: /\.vue$/,
- use: ['vue-loader', 'eslint-loader'],
- exclude: [/_cache/]
- },
- {
- test: /\.js$/,
- use: ['babel-loader', 'eslint-loader'],
- exclude: [/node_modules/, /md/]
- },
- {
- test: /\.md$/,
- use: ['vue-markdown-loader'],
- exclude: [/node_modules/]
- },
- {
- test: /\.css$/,
- use: ['style-loader', 'css-loader']
- },
- {
- test: /\.styl$/,
- use: ['style-loader', 'css-loader', 'stylus-loader']
- },
- {
- test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
- use: ['url-loader']
- },
- {
- test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
- use: ['url-loader']
- }
- ]
- },
- resolve: {
- alias: {
- docs: path.resolve(__dirname, '../docs')
- }
- },
- plugins: [
- new webpack.HashedModuleIdsPlugin(),
- new HtmlWebpackPlugin({
- template: path.resolve(__dirname, '../docs/template/index.html'),
- chunks: ['libs', 'vendor', 'resource', 'main']
- }),
- new webpack.optimize.CommonsChunkPlugin({
- names: ['vendor', 'libs', 'resource', 'manifest'],
- minChunks: Infinity
- }),
- new InlineManifestWebpackPlugin({
- name: 'webpackManifest'
- })
- ]
- }
|