Advertisement
Guest User

Untitled

a guest
Jul 18th, 2021
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const path = require('path');
  2. const WebpackCopyPlugin = require('copy-webpack-plugin');
  3.  
  4. module.exports = (webpackEnv, argv) => {
  5.   const env = process.env;
  6.   const mode = argv.mode || env.NODE_ENV || 'production';
  7.   const isProd = mode === 'production';
  8.  
  9.   const tsconfig = require(path.resolve(__dirname, 'tsconfig.json'));
  10.   const sourceDirName = 'src';
  11.   const outDirectoryName = tsconfig.compilerOptions.outDir || 'dist';
  12.   const outDirectory = path.resolve(__dirname, outDirectoryName);
  13.  
  14.   return {
  15.     mode: mode,
  16.     target: 'node',
  17.     devtool: isProd ? 'source-map' : 'eval',
  18.     entry: {
  19.       [sourceDirName + '/index']: `./${sourceDirName}/index.ts`
  20.     },
  21.     output: {
  22.       filename: '[name].js',
  23.       path: outDirectory,
  24.       libraryTarget: 'commonjs',
  25.       clean: true
  26.     },
  27.     resolve: {
  28.       extensions: ['.ts', '.js']
  29.     },
  30.     module: {
  31.       rules: [
  32.         {
  33.           test: /\.ts$/,
  34.           exclude: /node_modules/,
  35.           use: {
  36.             loader: 'babel-loader',
  37.             options: require(path.resolve(__dirname, 'babel.config.js'))
  38.           },
  39.         }
  40.       ]
  41.     },
  42.     plugins: [
  43.       ...(isProd ? [
  44.         new WebpackCopyPlugin({
  45.           patterns: [{
  46.             // Provide package.json without deps to avoid installing dependencies on vercel.com.
  47.             from: 'package.json',
  48.             to: 'package.json',
  49.             transform (content) {
  50.               const packageJson = JSON.parse(content.toString('utf8'));
  51.               delete packageJson.scripts;
  52.               delete packageJson.dependencies;
  53.               delete packageJson.devDependencies;
  54.               return Buffer.from(JSON.stringify(packageJson, null, 2));
  55.             }
  56.           }, {
  57.             // Rewrite vercel.json with removed `dist` path.
  58.             from: 'vercel.json',
  59.             to: 'vercel.json',
  60.             transform (content) {
  61.               const vercelJson = JSON.parse(content.toString('utf8'));
  62.               vercelJson.builds = vercelJson.builds.map((build) => (
  63.                 Object.assign(build, {
  64.                   src: build.src.replace(outDirectoryName + path.sep, '')
  65.                 })
  66.               ));
  67.               vercelJson.rewrites = vercelJson.rewrites.map((rewrite) => (
  68.                 Object.assign(rewrite, {
  69.                   destination: rewrite.destination.replace(path.sep + outDirectoryName, '')
  70.                 })
  71.               ));
  72.               return Buffer.from(JSON.stringify(vercelJson, null, 2));
  73.             }
  74.           }]
  75.         })
  76.       ] : [
  77.         // isDev
  78.       ])
  79.     ]
  80.   };
  81. };
  82.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement