<p dir="auto">Right now I have managed to setup a single webpack configuration and webpack-dev-server (hotload) that managing all my subprojects/plugins at the same time.</p>
<p dir="auto">However, I would like to be able to resolve folders for each subproject, such as <code class="notranslate">/components</code>, so as to avoid long relative paths. Is this possible?</p>
<p dir="auto">I have the following folder structure</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="    -/ MyProject
      -/ node_modules
      -/ plugin1
        -/ node_modules
        - package.json
        ...
      -/ plugin2
      -/ plugin3

    -/ shared (styles etc)
    - webpack.config.js
    - package.json"><pre class="notranslate"><code class="notranslate">    -/ MyProject
      -/ node_modules
      -/ plugin1
        -/ node_modules
        - package.json
        ...
      -/ plugin2
      -/ plugin3

    -/ shared (styles etc)
    - webpack.config.js
    - package.json
</code></pre></div>
<p dir="auto">My webpack conf:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="var webpack = require('webpack');
var path = require('path');
var ExtractTextPlugin = require('extract-text-webpack-plugin')

var env = process.env.NODE_ENV;
var isProduction = env === 'production'
var host = 'http://localhost:4000';
var socketHost = 'ws://localhost:4000';

    module.exports = {
      devtool: 'source-map',
      entry: {
        script: ['webpack-hot-middleware/client', './js/script/src/index.js'],
        app: ['webpack-hot-middleware/client', './js/site/index.js'],
      },
      output: {
        path: path.join(__dirname , 'dist'),
        filename: '[name].js',
        publicPath: '/static/'
      },
      resolve: {
        root: path.resolve(__dirname),
        alias: {
          styles: path.join(__dirname, 'styles'),
          app: path.join(__dirname, 'js', 'site'),
          script: path.join(__dirname, 'js', 'script'),
        }
      },
      module: {
        loaders: [
          {
            test: /\.jsx?$/,
            exclude: /node_modules/,
            loader: 'babel-loader',
          },
          {
            test: /\.scss$/,
            loaders: [&quot;style&quot;, &quot;css&quot;, &quot;sass&quot;]
          },
          {
            test: /\.(otf|eot|svg|ttf|woff|woff2)(\?.+)$/,
            loader: 'url-loader?limit=8192',
            include: /node_modules/
          }
        ]
      },
      plugins: [
        new webpack.DefinePlugin({ PRODUCTION: false, APP_HOST: JSON.stringify(host), WS_HOST: JSON.stringify(socketHost) }),
        new webpack.optimize.OccurenceOrderPlugin(), // recommanded by webpack
        // new webpack.HotModuleReplacementPlugin(),
        new webpack.NoErrorsPlugin(), // recommanded by webpack
        // new ExtractTextPlugin('bundle.css')
      ]
    };
"><pre class="notranslate"><code class="notranslate">var webpack = require('webpack');
var path = require('path');
var ExtractTextPlugin = require('extract-text-webpack-plugin')

var env = process.env.NODE_ENV;
var isProduction = env === 'production'
var host = 'http://localhost:4000';
var socketHost = 'ws://localhost:4000';

    module.exports = {
      devtool: 'source-map',
      entry: {
        script: ['webpack-hot-middleware/client', './js/script/src/index.js'],
        app: ['webpack-hot-middleware/client', './js/site/index.js'],
      },
      output: {
        path: path.join(__dirname , 'dist'),
        filename: '[name].js',
        publicPath: '/static/'
      },
      resolve: {
        root: path.resolve(__dirname),
        alias: {
          styles: path.join(__dirname, 'styles'),
          app: path.join(__dirname, 'js', 'site'),
          script: path.join(__dirname, 'js', 'script'),
        }
      },
      module: {
        loaders: [
          {
            test: /\.jsx?$/,
            exclude: /node_modules/,
            loader: 'babel-loader',
          },
          {
            test: /\.scss$/,
            loaders: ["style", "css", "sass"]
          },
          {
            test: /\.(otf|eot|svg|ttf|woff|woff2)(\?.+)$/,
            loader: 'url-loader?limit=8192',
            include: /node_modules/
          }
        ]
      },
      plugins: [
        new webpack.DefinePlugin({ PRODUCTION: false, APP_HOST: JSON.stringify(host), WS_HOST: JSON.stringify(socketHost) }),
        new webpack.optimize.OccurenceOrderPlugin(), // recommanded by webpack
        // new webpack.HotModuleReplacementPlugin(),
        new webpack.NoErrorsPlugin(), // recommanded by webpack
        // new ExtractTextPlugin('bundle.css')
      ]
    };

</code></pre></div>
<p dir="auto">I am upgrading existing apps from webpack 4.43.0 to webpack 5.0.0-beta.28. I am seeing multiple deprecation warnings. I am using</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&quot;webpack&quot;: &quot;^5.0.0-beta.28&quot;,
&quot;webpack-cli&quot;: &quot;3.3.12&quot;,
&quot;webpack-dev-server&quot;: &quot;3.11.0&quot;,
&quot;html-webpack-plugin&quot;: &quot;4.3.0&quot;,
&quot;duplicate-package-checker-webpack-plugin&quot;: &quot;3.0.0&quot;,
"><pre class="notranslate"><code class="notranslate">"webpack": "^5.0.0-beta.28",
"webpack-cli": "3.3.12",
"webpack-dev-server": "3.11.0",
"html-webpack-plugin": "4.3.0",
"duplicate-package-checker-webpack-plugin": "3.0.0",

</code></pre></div>
<p dir="auto">With above setup, when I run<br>
<code class="notranslate">node --trace-deprecation node_modules/webpack/bin/webpack.js --config ./webpack/webpack.development.js</code></p>
<p dir="auto">I am seeing following Deprecation warnings coming from <code class="notranslate">last-call-webpack-plugin</code> and <code class="notranslate">html-webpack-plugin</code> plugins</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="(node:47918) [DEP_WEBPACK_COMPILATION_OPTIMIZE_CHUNK_ASSETS] DeprecationWarning: optimizeChunkAssets is deprecated (use Compilation.hook.processAssets instead and use one of Compilation.PROCESS_ASSETS_STAGE_* as stage option)
    at /Users/vrajole/sg-core/raisin-frontend/node_modules/last-call-webpack-plugin/src/index.js:176:49
    at Hook.eval [as call] (eval at create (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:19:10), &lt;anonymous&gt;:198:1)
    at Hook.CALL_DELEGATE [as _call] (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/node_modules/tapable/lib/Hook.js:14:14)
    at Compiler.newCompilation (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/lib/Compiler.js:910:26)
    at /Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/lib/Compiler.js:951:29
"><pre class="notranslate"><code class="notranslate">(node:47918) [DEP_WEBPACK_COMPILATION_OPTIMIZE_CHUNK_ASSETS] DeprecationWarning: optimizeChunkAssets is deprecated (use Compilation.hook.processAssets instead and use one of Compilation.PROCESS_ASSETS_STAGE_* as stage option)
    at /Users/vrajole/sg-core/raisin-frontend/node_modules/last-call-webpack-plugin/src/index.js:176:49
    at Hook.eval [as call] (eval at create (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:19:10), &lt;anonymous&gt;:198:1)
    at Hook.CALL_DELEGATE [as _call] (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/node_modules/tapable/lib/Hook.js:14:14)
    at Compiler.newCompilation (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/lib/Compiler.js:910:26)
    at /Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/lib/Compiler.js:951:29

</code></pre></div>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="(node:47918) [DEP_WEBPACK_MAIN_TEMPLATE_GET_PUBLIC_PATH] DeprecationWarning: MainTemplate.getPublicPath is deprecated (use Compilation.getAssetPath(compilation.outputOptions.publicPath, options) instead)
    at HtmlWebpackPlugin.htmlWebpackPluginAssets (/Users/vrajole/sg-core/raisin-frontend/node_modules/html-webpack-plugin/index.js:532:56)
    at /Users/vrajole/sg-core/raisin-frontend/node_modules/html-webpack-plugin/index.js:164:29
    at _next0 (eval at create (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), &lt;anonymous&gt;:31:1)
    at eval (eval at create (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), &lt;anonymous&gt;:48:1)
    at /Users/vrajole/sg-core/raisin-frontend/node_modules/duplicate-package-checker-webpack-plugin/lib/index.js:190:5
    at Hook.eval [as callAsync] (eval at create (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), &lt;anonymous&gt;:43:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/node_modules/tapable/lib/Hook.js:18:14)
    at Compiler.emitAssets (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/lib/Compiler.js:729:19)
    at /Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/lib/Compiler.js:392:10
    at processTicksAndRejections (internal/process/task_queues.js:75:11)"><pre class="notranslate"><code class="notranslate">(node:47918) [DEP_WEBPACK_MAIN_TEMPLATE_GET_PUBLIC_PATH] DeprecationWarning: MainTemplate.getPublicPath is deprecated (use Compilation.getAssetPath(compilation.outputOptions.publicPath, options) instead)
    at HtmlWebpackPlugin.htmlWebpackPluginAssets (/Users/vrajole/sg-core/raisin-frontend/node_modules/html-webpack-plugin/index.js:532:56)
    at /Users/vrajole/sg-core/raisin-frontend/node_modules/html-webpack-plugin/index.js:164:29
    at _next0 (eval at create (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), &lt;anonymous&gt;:31:1)
    at eval (eval at create (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), &lt;anonymous&gt;:48:1)
    at /Users/vrajole/sg-core/raisin-frontend/node_modules/duplicate-package-checker-webpack-plugin/lib/index.js:190:5
    at Hook.eval [as callAsync] (eval at create (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), &lt;anonymous&gt;:43:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/node_modules/tapable/lib/Hook.js:18:14)
    at Compiler.emitAssets (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/lib/Compiler.js:729:19)
    at /Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/lib/Compiler.js:392:10
    at processTicksAndRejections (internal/process/task_queues.js:75:11)
</code></pre></div>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="(node:47918) [DEP_WEBPACK_MODULE_ISSUER] DeprecationWarning: Module.issuer: Use new ModuleGraph API
    at Function.getModuleGraphForModule (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/lib/ModuleGraph.js:695:10)
    at NormalModule.get issuer [as issuer] (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/lib/Module.js:243:22)
    at /Users/vrajole/sg-core/raisin-frontend/node_modules/duplicate-package-checker-webpack-plugin/lib/index.js:105:29
    at Set.forEach (&lt;anonymous&gt;)
    at /Users/vrajole/sg-core/raisin-frontend/node_modules/duplicate-package-checker-webpack-plugin/lib/index.js:74:25
    at Hook.eval [as callAsync] (eval at create (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), &lt;anonymous&gt;:43:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/node_modules/tapable/lib/Hook.js:18:14)
    at Compiler.emitAssets (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/lib/Compiler.js:729:19)
    at /Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/lib/Compiler.js:392:10
    at processTicksAndRejections (internal/process/task_queues.js:75:11)
"><pre class="notranslate"><code class="notranslate">(node:47918) [DEP_WEBPACK_MODULE_ISSUER] DeprecationWarning: Module.issuer: Use new ModuleGraph API
    at Function.getModuleGraphForModule (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/lib/ModuleGraph.js:695:10)
    at NormalModule.get issuer [as issuer] (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/lib/Module.js:243:22)
    at /Users/vrajole/sg-core/raisin-frontend/node_modules/duplicate-package-checker-webpack-plugin/lib/index.js:105:29
    at Set.forEach (&lt;anonymous&gt;)
    at /Users/vrajole/sg-core/raisin-frontend/node_modules/duplicate-package-checker-webpack-plugin/lib/index.js:74:25
    at Hook.eval [as callAsync] (eval at create (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/node_modules/tapable/lib/HookCodeFactory.js:33:10), &lt;anonymous&gt;:43:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/node_modules/tapable/lib/Hook.js:18:14)
    at Compiler.emitAssets (/Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/lib/Compiler.js:729:19)
    at /Users/vrajole/sg-core/raisin-frontend/node_modules/webpack/lib/Compiler.js:392:10
    at processTicksAndRejections (internal/process/task_queues.js:75:11)

</code></pre></div>
<p dir="auto">Attaching screenshots for reference.</p>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/4668780/91580308-30e09680-e94d-11ea-9e7a-b89ad98e1a79.png"><img src="https://user-images.githubusercontent.com/4668780/91580308-30e09680-e94d-11ea-9e7a-b89ad98e1a79.png" alt="Screenshot 2020-08-28 at 4 39 10 PM" style="max-width: 100%;"></a></p>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/4668780/91580351-3dfd8580-e94d-11ea-8d04-fbda51e8e4a9.png"><img src="https://user-images.githubusercontent.com/4668780/91580351-3dfd8580-e94d-11ea-8d04-fbda51e8e4a9.png" alt="Screenshot 2020-08-28 at 4 38 50 PM" style="max-width: 100%;"></a></p>