webpack.base.conf.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. const path = require('path');
  2. const CopyWebpackPlugin = require('copy-webpack-plugin');
  3. const CleanWebpackPlugin = require("clean-webpack-plugin")
  4. const { TsConfigPathsPlugin } = require('awesome-typescript-loader');
  5. module.exports = {
  6. entry: ['./src/index.tsx'],
  7. mode: 'development',
  8. output: {
  9. path: __dirname + '/../dist',
  10. filename: 'app.js'
  11. },
  12. resolve: {
  13. extensions: ['.ts', '.tsx', '.js', '.jsx'],
  14. plugins: [new TsConfigPathsPlugin()],
  15. },
  16. devtool: 'source-map',
  17. module: {
  18. rules: [
  19. {
  20. test: /\.tsx?$/,
  21. loader: 'awesome-typescript-loader',
  22. },
  23. ]
  24. },
  25. plugins: [
  26. new CopyWebpackPlugin([
  27. { from: 'public' },
  28. {
  29. from: require.resolve('plusnew'),
  30. to: 'plusnew.js',
  31. }
  32. ]),
  33. new CleanWebpackPlugin('dist', {
  34. root: path.join(__dirname, '..'),
  35. }
  36. ),
  37. ],
  38. externals: [
  39. function (context, request, callback) {
  40. const contextParts = path.parse(context);
  41. if (request === 'plusnew' || (request === 'enzyme' && contextParts.base !== 'karma')) {
  42. return callback(null, request);
  43. } else if (request === '__dirname') { // This module creates a string for each module, in what directory it is existent
  44. // const dirname = context.slice(path.resolve(__dirname, '../../src').length + 1);
  45. const lastDir = path.parse(context).name;
  46. return callback(null, JSON.stringify({ default: lastDir }));
  47. }
  48. callback();
  49. },
  50. ],
  51. };