Advertisement
Guest User

Untitled

a guest
Sep 30th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. var webpack = require('webpack');
  2. var path = require('path');
  3. var resolveNgRoute = require('@angularclass/resolve-angular-routes');
  4. var LiveReloadPlugin = require('webpack-livereload-plugin');
  5. var CopyWebpackPlugin = require('copy-webpack-plugin');
  6.  
  7. var commonConfig = {
  8. resolve: {
  9. extensions: ['', '.ts', '.js', '.json']
  10. },
  11. module: {
  12. preLoaders: [
  13. ],
  14. loaders: [
  15. // TypeScript
  16. { test: /\.ts$/, loaders: ['ts-loader', 'angular2-template-loader'] },
  17. { test: /\.html$/, loader: 'raw-loader' },
  18. { test: /\.css$/, loader: 'style-loader!css-loader!resolve-url' },
  19. { test: /\.scss$/, exclude: /node_modules/, loaders: ['raw-loader', 'sass-loader'] },
  20. { test: /\.json$/, loader: 'raw-loader' },
  21. { test: /\.(png|woff|woff2|eot|ttf|svg)(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=100000' }
  22. ],
  23. },
  24. plugins: [
  25. new webpack.ContextReplacementPlugin(
  26. // The (\\|\/) piece accounts for path separators in *nix and Windows
  27. /angular(\\|\/)core(\\|\/)src(\\|\/)linker/,
  28. root('./src'),
  29. resolveNgRoute(root('./src'))
  30. ),
  31. new LiveReloadPlugin({
  32. appendScriptTag: true
  33. }),
  34. new CopyWebpackPlugin([
  35. {
  36. from: root('src/assets'), // replace with your folder
  37. to: root('dist/client')
  38. }, {
  39. from: root('src/assets'), // replace with your folder
  40. to: root('dist/server')
  41. }
  42. ])
  43. ]
  44. };
  45.  
  46.  
  47. var clientConfig = {
  48. target: 'web',
  49. entry: ['bootstrap-loader', 'font-awesome-sass-loader!./font-awesome-sass.config.js', './src/client'],
  50. // entry: ['./src/client'],
  51. output: {
  52. path: root('dist/client')
  53. },
  54. node: {
  55. global: true,
  56. __dirname: true,
  57. __filename: true,
  58. process: true,
  59. Buffer: false
  60. }
  61. };
  62.  
  63.  
  64. var serverConfig = {
  65. target: 'node',
  66. entry: ['bootstrap-loader', './src/server'], // use the entry file of the node server if everything is ts rather than es5
  67. output: {
  68. path: root('dist/server'),
  69. libraryTarget: 'commonjs2'
  70. },
  71. externals: checkNodeImport,
  72. node: {
  73. global: true,
  74. __dirname: true,
  75. __filename: true,
  76. process: true,
  77. Buffer: true
  78. }
  79. };
  80.  
  81. var testConfig = {
  82. target: 'web',
  83. entry: ['./src/test'],
  84. devtool: 'inline-source-map',
  85. resolve: {
  86. extensions: ['', '.ts', '.js']
  87. },
  88. module: {
  89. loaders: [
  90. {
  91. test: /\.ts$/,
  92. loaders: ['ts-loader', 'angular2-template-loader']
  93. },
  94. {
  95. test: /\.html$/,
  96. loader: 'html'
  97.  
  98. },
  99. {
  100. test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
  101. loader: 'null'
  102. },
  103. {
  104. test: /\.css$/,
  105. exclude: root('./src'),
  106. loader: 'null'
  107. },
  108. {
  109. test: /\.css$/,
  110. include: root('./src'),
  111. loader: 'raw'
  112. }
  113. ]
  114. }
  115. };
  116.  
  117.  
  118.  
  119. // Default config
  120. var defaultConfig = {
  121. context: __dirname,
  122. resolve: {
  123. root: root('/src')
  124. },
  125. output: {
  126. publicPath: path.resolve(__dirname),
  127. filename: 'index.js'
  128. }
  129. }
  130.  
  131.  
  132.  
  133. var webpackMerge = require('webpack-merge');
  134. module.exports = [
  135. // Client
  136. webpackMerge({}, defaultConfig, commonConfig, clientConfig),
  137.  
  138. // Server
  139. webpackMerge({}, defaultConfig, commonConfig, serverConfig)
  140.  
  141. ]
  142.  
  143. // Helpers
  144. function includeClientPackages(packages) {
  145. return function (context, request, cb) {
  146. if (packages && packages.indexOf(request) !== -1) {
  147. return cb();
  148. }
  149. return checkNodeImport(context, request, cb);
  150. };
  151. }
  152.  
  153. function checkNodeImport(context, request, cb) {
  154. if (!path.isAbsolute(request) && request.charAt(0) !== '.') {
  155. cb(null, 'commonjs ' + request); return;
  156. }
  157. cb();
  158. }
  159.  
  160. function root(args) {
  161. args = Array.prototype.slice.call(arguments, 0);
  162. return path.join.apply(path, [__dirname].concat(args));
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement