title: How can I change the public path to something containing an underscore in Laravel Mix?
body: <p>In Laravel 5.4 Mix was introduced to compile assets and maintain the asset pipeline.  Mix defaults to your public directory being named <code>public</code>.  In many cases, including mine, my public directory is called something else.  In my case, it's <code>public_html</code>.</p>
  
  <p>How can I change the public directory where assets are compiled to?</p>
  
  <p>I have tried changing the paths within <code>webpack.min.js</code> to:</p>
  
  <pre><code>mix.js('resources/assets/js/app.js', 'public_html/assets/js')
     .sass('resources/assets/sass/app.scss', 'public_html/assets/css');
  </code></pre>
  
  <p>Unfortunately this compiles to:</p>
  
  <pre><code>- public
  |- _html
  |-- assets
  |--- css
  |--- js
  |- fonts
  </code></pre>
  
  <p>In Laravel 5.3 and Elixir this was as simple as:</p>
  
  <pre><code>elixir.config.publicPath = 'public_html/assets';
  </code></pre>
  
  <p>I have checked Mix's config file, but can't see anything obvious here.</p>
  
  <p><em>Please note: this is Laravel Mix, the npm package, so it's nothing to do with amends in the <code>index.php</code> file.</em></p>