webpack.common.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. var path = require('path')
  2. var HtmlWebpackPlugin = require('html-webpack-plugin')
  3. var webpack = require('webpack')
  4. module.exports = {
  5. entry: {
  6. 'osmd': './src/OSMD/OSMD.ts', // Main library
  7. 'demo': './demo/index.js' // Demo index
  8. },
  9. output: {
  10. path: path.resolve(__dirname, 'build'),
  11. filename: '[name].js'
  12. },
  13. resolve: {
  14. // Add '.ts' and '.tsx' as a resolvable extension.
  15. extensions: ['.webpack.js', '.web.js', '.ts', '.tsx', '.js']
  16. },
  17. module: {
  18. loaders: [
  19. // all files with a '.ts' or '.tsx' extension will be handled by 'ts-loader'
  20. {
  21. test: /\.ts$/,
  22. loader: 'ts-loader',
  23. exclude: /(node_modules|bower_components)/
  24. },
  25. // FIXME: TSLint loader is horribly slow therefore check only at beginning
  26. // https://github.com/wbuchwalter/tslint-loader/issues/76
  27. // // ts lint loader. will pre-lint the ts files
  28. // {
  29. // test: /\.ts$/,
  30. // enforce: 'pre',
  31. // loader: 'tslint-loader',
  32. // options: {
  33. // typeCheck: true
  34. // }
  35. // },
  36. // For html loader generation
  37. {
  38. test: /\.html$/,
  39. loader: 'underscore-template-loader'
  40. },
  41. {
  42. test: /\.(jpg|jpeg|gif|png|ico)$/,
  43. exclude: /node_modules/,
  44. loader: 'file-loader?name=img/[path][name].[ext]&context=./app/images'
  45. }
  46. ]
  47. },
  48. plugins: [
  49. new webpack.ProvidePlugin({
  50. $: 'jquery',
  51. jQuery: 'jquery'
  52. }),
  53. new webpack.EnvironmentPlugin({
  54. STATIC_FILES_SUBFOLDER: false, // Set to other directory if NOT using webpack-dev-server
  55. NODE_ENV: 'development', // use 'development' unless process.env.NODE_ENV is defined
  56. DEBUG: false,
  57. DRAW_BOUNDING_BOX_ELEMENT: false // Specifies the element to draw bounding boxes for (e.g. 'GraphicalLabels'). If 'all', bounding boxes are drawn for all elements.
  58. }),
  59. // add a demo page to the build folder
  60. new HtmlWebpackPlugin({
  61. template: 'demo/index.html',
  62. title: 'OpenSheetMusicDisplay Demo'
  63. })
  64. ],
  65. devServer: {
  66. contentBase: [
  67. path.join(__dirname, 'test/data'),
  68. path.join(__dirname, 'build'),
  69. path.join(__dirname, 'demo')
  70. ],
  71. port: 8000,
  72. compress: false
  73. }
  74. }