webpack.common.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. var HtmlWebpackPlugin = require('html-webpack-plugin');
  2. var WriteFileWebpackPlugin = require('write-file-webpack-plugin');
  3. var autoPrefixer = require('autoprefixer');
  4. var path = require('path');
  5. var webpack = require('webpack');
  6. var outDir = path.resolve(__dirname, 'dist');
  7. module.exports = {
  8. devServer: {
  9. contentBase: outDir,
  10. outputPath: outDir,
  11. port: 4000,
  12. historyApiFallback: true
  13. },
  14. devtool: 'cheap-module-source-map',
  15. // Externals copied to /dist via CopyWebpackPlugin
  16. externals:
  17. {
  18. 'angular': true,
  19. // Wrapped in window because of hyphens
  20. 'angular-ui-router': 'window["angular-ui-router"]',
  21. 'angular-translate': 'window["angular-translate"]'
  22. },
  23. module: {
  24. preLoaders: [
  25. {
  26. test: /\.ts$/,
  27. loader: 'tslint'
  28. }
  29. ],
  30. loaders: [
  31. {
  32. test: /\.ts$/,
  33. loader: 'ts',
  34. exclude: /node_modules/
  35. },
  36. {
  37. test: /index\.html$/,
  38. loader: 'html',
  39. exclude: /node_modules/
  40. },
  41. {
  42. test: /\.html$/,
  43. loader: 'ngtemplate?relativeTo=' + (path.resolve(__dirname, './src')) + '/!html',
  44. exclude: /index\.html$/
  45. },
  46. {
  47. test: /\.scss$/,
  48. loaders: [ 'style', 'css', 'sass', 'postcss' ]
  49. },
  50. {
  51. test: /\.json/,
  52. loaders: [ 'json' ]
  53. },
  54. {
  55. test: /\.(png|jpg|jpeg|gif|svg)$/,
  56. loaders: [ 'url?limit=25000' ]
  57. }
  58. ]
  59. },
  60. // [name] is replaced by entry point name
  61. output: {
  62. filename: '[name].js',
  63. path: outDir
  64. },
  65. plugins: [
  66. new HtmlWebpackPlugin({
  67. template: 'index.html',
  68. inject: 'body'
  69. }),
  70. // Because we copy the output to another directory, we need file system watch support.
  71. // Webpack-dev-server does not do this without the plugin.
  72. new WriteFileWebpackPlugin()
  73. ],
  74. postcss: function() {
  75. return [
  76. autoPrefixer({
  77. browsers: ['last 2 versions']
  78. })
  79. ];
  80. },
  81. resolve: {
  82. extensions: [ '', '.ts', '.js', '.json' ],
  83. modulesDirectories: ['./src', './vendor', 'node_modules']
  84. }
  85. };