const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const ExtractTextPlugin = require('extract-text-webpack-plugin'); const fs = require('fs'); const entry = {}; const plugins = []; fs .readdirSync(path.join(__dirname, './src/views')) .forEach(file => { entry[file] = `./src/views/${file}/index.js`; plugins.push(new HtmlWebpackPlugin({ filename: `${file}.html`, template: './src/template/index.ejs', inject: true, chunks: ['vendors', file], externalscripts: ["https://cdn.yoho.cn/20190712/vue.min.js", 'https://cdn.yoho.cn/20190712/iview.min.js'], xlsScript:'https://cdn.yoho.cn/20190712/xlsx.full.min.js', })); }); module.exports = { entry, output: { path: path.join(__dirname, './dist') }, externals: { vue: 'Vue', iview: 'iview', xlsx: 'XLSX' }, module: { rules: [{ test: /.vue$/, use: [{ loader: 'vue-loader', options: { loaders: { sass: ExtractTextPlugin.extract({ use: ['css-loader?minimize', 'autoprefixer-loader', 'sass-loader'], fallback: 'vue-style-loader' }), css: ExtractTextPlugin.extract({ use: ['css-loader', 'autoprefixer-loader', 'sass-loader'], fallback: 'vue-style-loader' }) } } }, { loader: 'iview-loader', options: { prefix: true } } ] }, // { // test: /iview\/.*?js$/, // loader: 'babel-loader', // }, { test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ }, { test: /\.css$/, use: ExtractTextPlugin.extract({ use: ['css-loader?minimize', 'autoprefixer-loader'], fallback: 'style-loader' }) }, { test: /\.scss/, use: ExtractTextPlugin.extract({ use: ['css-loader', 'autoprefixer-loader', 'sass-loader'], fallback: 'style-loader' }) }, { test: /\.(png|jpe?g|gif)(\?.*)?$/, loader: 'url-loader', options: { limit: 10000, name: 'img/[name].[hash:7].[ext]' } }, { test: /\.(woff2?|eot|ttf|otf|svg)(\?.*)?$/, loader: 'url-loader', options: { limit: 10000, name: 'fonts/[name].[hash:7].[ext]', publicPath: '../' } }, { test: /\.(html|tpl)$/, loader: 'html-loader' } ] }, resolve: { extensions: ['.js', '.vue'], modules: [ path.join(__dirname, './src'), 'node_modules' ], alias: { '@': path.join(process.cwd(), 'src'), 'components': path.join(process.cwd(), 'src/components'), 'assets': path.join(process.cwd(), 'src/assets') } }, plugins: [...plugins] };