webpack.config.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. const Path = require('path')
  2. const WebpackPwaManifest = require('webpack-pwa-manifest')
  3. const VueLoaderPlugin = require('vue-loader/lib/plugin')
  4. const HtmlWebpackPlugin = require('html-webpack-plugin')
  5. const webpack = require('webpack')
  6. const yargs = require('yargs')
  7. const mode = yargs.argv.mode || 'development'
  8. module.exports = {
  9. devtool: 'source-map',
  10. mode: mode,
  11. entry: {
  12. main: [
  13. mode === 'development' && `webpack-hot-middleware/client?path=__webpack__/__webpack_hmr&timeout=20000`,
  14. Path.join(__dirname, 'app/main.js')
  15. ].filter(x => x)
  16. },
  17. devServer: {
  18. hot: mode === 'development'
  19. },
  20. module: {
  21. rules: [
  22. { test: /\.js$/, loader: 'babel-loader' },
  23. { test: /\.vue$/, loader: 'vue-loader' },
  24. {
  25. test: /\.css$/,
  26. loader: ['vue-style-loader', 'css-loader']
  27. },
  28. {
  29. test: /\.less$/,
  30. loader: ['vue-style-loader', 'css-loader', 'less-loader']
  31. },
  32. {
  33. test: /\.styl$/,
  34. loader: ['vue-style-loader', 'css-loader', 'stylus-loader']
  35. },
  36. {
  37. test: /\.(ttf|woff|woff2|svg|eot)$/,
  38. loader: 'file-loader'
  39. },
  40. {
  41. test: /\.nes$/,
  42. loader: 'arraybuffer-loader'
  43. }
  44. ]
  45. },
  46. plugins: [
  47. new VueLoaderPlugin(),
  48. new HtmlWebpackPlugin({
  49. template: Path.join(__dirname, 'app/index.html'),
  50. inject: true,
  51. templateParameters: { }
  52. }),
  53. new WebpackPwaManifest({
  54. name: 'NES AI',
  55. short_name: 'nes-ai',
  56. description: 'This is an installable app.',
  57. background_color: '#ffffff',
  58. icons: [
  59. {
  60. src: Path.resolve('app/assets/placeholder_icon.png'),
  61. sizes: [96, 128, 192, 256, 384, 512]
  62. }
  63. ],
  64. inject: true,
  65. orientation: 'omit'
  66. }),
  67. mode === 'development' && new webpack.HotModuleReplacementPlugin()
  68. ].filter(x => x)
  69. }