Advertisement
Guest User

Untitled

a guest
May 24th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.05 KB | None | 0 0
  1. const path = require('path');
  2. const webpack = require('webpack');
  3. const MiniCssExtractPlugin = require('mini-css-extract-plugin');
  4. // const CleanWebpackPlugin = require('clean-webpack-plugin');
  5. const Precss = require('precss');
  6. const Autoprefixer = require('autoprefixer');
  7. const SpriteLoaderPlugin = require('svg-sprite-loader/plugin');
  8. const VueLoaderPlugin = require('vue-loader/lib/plugin');
  9.  
  10. const devMode = process.env.NODE_ENV !== 'production';
  11.  
  12. const config = {
  13. entry: {
  14. student: './assets/javascript/student.js',
  15. admin: './assets/javascript/admin.js',
  16. partner: './assets/javascript/partner.js',
  17. index: './assets/javascript/app.js',
  18. },
  19. output: {
  20. filename: '[name].js',
  21. chunkFilename: '[id].js',
  22. path: path.resolve(__dirname, 'assets/dist'),
  23. publicPath: '/cabinet/dist/',
  24. },
  25.  
  26. plugins: [
  27. // extract styles to it's own file
  28. new MiniCssExtractPlugin({
  29. filename: '[name].css',
  30. chunkFilename: '[id].css',
  31. }),
  32.  
  33. new VueLoaderPlugin(),
  34.  
  35. // new LiveReloadPlugin(),
  36.  
  37. new SpriteLoaderPlugin(),
  38. ],
  39.  
  40. module: {
  41. rules: [
  42. {
  43. test: /\.tsx?$/,
  44. use: 'ts-loader',
  45. exclude: /node_modules/,
  46. },
  47. {
  48. test: require.resolve('jquery'),
  49. use: [{
  50. loader: 'expose-loader',
  51. options: 'jQuery',
  52. }, {
  53. loader: 'expose-loader',
  54. options: '$',
  55. }],
  56. },
  57. {
  58. test: /\.m?js$/,
  59. exclude: /(node_modules|bower_components)/,
  60. use: {
  61. loader: 'babel-loader',
  62. options: {
  63. presets: ['@babel/preset-env'],
  64. },
  65. },
  66. },
  67.  
  68. {
  69. test: /\.vue$/,
  70. loader: 'vue-loader',
  71. },
  72.  
  73. {
  74. test: /\.css$/,
  75. use: [
  76. {
  77. loader: MiniCssExtractPlugin.loader,
  78. }, {
  79. loader: 'css-loader',
  80. options: {
  81. sourceMap: true,
  82. importLoaders: 1,
  83. },
  84. }, {
  85. loader: 'resolve-url-loader',
  86. }, {
  87. loader: 'postcss-loader', // Run post css actions
  88. options: {
  89. ident: 'postcss',
  90. // post css plugins, can be exported to postcss.config.js
  91. plugins(loader) {
  92. return [
  93. require('postcss-import')({ root: loader.resourcePath }),
  94. require('postcss-preset-env')(),
  95. require('cssnano')(),
  96. require('autoprefixer')(),
  97. ];
  98. },
  99. sourceMap: true,
  100. },
  101. },
  102. ],
  103. }, {
  104. test: /\.scss$/,
  105. use: [
  106. {
  107. loader: MiniCssExtractPlugin.loader,
  108. },
  109. {
  110. loader: 'css-loader',
  111. options: {
  112. sourceMap: true,
  113. importLoaders: 1,
  114. },
  115. }, {
  116. loader: 'resolve-url-loader',
  117. }, {
  118. loader: 'postcss-loader', // Run post css actions
  119. options: {
  120. ident: 'postcss',
  121. // post css plugins, can be exported to postcss.config.js
  122. plugins(loader) {
  123. return [
  124. require('postcss-import')({ root: loader.resourcePath }),
  125. require('postcss-preset-env')(),
  126. require('cssnano')(),
  127. require('autoprefixer')(),
  128. ];
  129. },
  130. sourceMap: true,
  131. },
  132. }, {
  133. loader: 'sass-loader', // compiles Sass to CSS
  134. options: {
  135. sourceMap: true,
  136. },
  137. },
  138. ],
  139. },
  140. {
  141. test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/,
  142. loader: 'url-loader',
  143. exclude: path.join(__dirname, './assets/icons'),
  144. options: {
  145. publicPath: './',
  146. limit: 10000,
  147. },
  148. },
  149. {
  150. test: /\.svg$/,
  151. include: [
  152. path.join(__dirname, './assets/icons'),
  153. ],
  154. loader: 'svg-sprite-loader',
  155. options: {
  156. extract: false,
  157. symbolId: 'icon-[name]',
  158. },
  159. },
  160. ],
  161. },
  162.  
  163. resolve: {
  164. alias: {
  165. vue: devMode ? 'vue/dist/vue.js' : 'vue/dist/vue.min.js',
  166. },
  167. extensions: ['.tsx', '.ts', '.js'],
  168. },
  169.  
  170. devtool: devMode ? 'cheap-module-eval-source-map' : '',
  171.  
  172. externals: {
  173. jquery: 'jQuery',
  174. $: 'jQuery',
  175. },
  176.  
  177. performance: {
  178. hints: devMode ? false : 'warning',
  179. },
  180.  
  181. stats: { children: false },
  182. };
  183.  
  184. devMode ? config.plugins.push(new webpack.SourceMapDevToolPlugin()) : '';
  185.  
  186. module.exports = config;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement