<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="15743" data-post-id="15743">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-Phoenix-Core-Team" data-username="alexgaribay" data-post="10" data-topic="2454">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/alexgaribay/48/5261_2.png" class="avatar"> alexgaribay:</div>
<blockquote>
<p>Anecdotally, I use multiple SCSS files and multiple JS files and I’ve never had issues with the transpile time. Brunch transpiles my code in a matter of seconds but I develop on OS X instead of Windows, albeit I just export a single CSS and JS file when all is finished.</p>
</blockquote>
</aside>
<p>Yeah I’ve not had these issues on my linux desktops at home, though my projects there are quite a bit smaller and less complex then the one at work.  So the one at work, where I have all the issue, is both far far larger and it is on Windows, either one could be why brunch is painful there, either one is bad for having brunch as a default in phoenix though.</p>
<aside class="quote no-group" data-username="andre1sk" data-post="11" data-topic="2454" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/andre1sk/48/1380_2.png" class="avatar"> andre1sk:</div>
<blockquote>
<p>I think we can come up with some nice package to do what you propose vs making it default.  So those who need it would just do --no-brunch and install a package that has a task to init everything to the way you describe.</p>
</blockquote>
</aside>
<p>Honestly I’d say default should be the npm way, with a --brunch to enable brunch, --webpack to enable webpack, etc…  The default way should be the most simple and reliable, and brunch is definitely not reliable on all platforms that Phoenix supports.  And debugging into webpack/gulp issues is remarkably painful (that is something that brunch does better than them).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="15743" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/potentially-removing-brunch-from-the-phoenix-new-template-generator/2454/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-15743" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="15743"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="15745" data-post-id="15745">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="chrismccord" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/chrismccord/120/24233_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  chrismccord
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Phoenix</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I think the node world is painful no matter what approach you take and there’s no silver bullet. My main concern with the proposed approach is you end up accidentally rebuilding brunch, but worse, with a hodgepodge of dependent scripts. I think it’s a great choice if it’s working well for you, but I remain unconvinced that it’s the best approach for the majority of users.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="15745" data-batch-url="/posts/batch_likers">
                        8
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/potentially-removing-brunch-from-the-phoenix-new-template-generator/2454/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-15745" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="15745"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="15746" data-post-id="15746">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="andre1sk" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/andre1sk/120/1380_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  andre1sk
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="12" data-topic="2454">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Honestly I’d say default should be the npm way, with a --brunch to enable brunch, --webpack to enable webpack, etc…  The default way should be the most simple and reliable, and brunch is definitely not reliable on all platforms that Phoenix supports.  And debugging into webpack/gulp issues is remarkably painful (that is something that brunch does better than them).</p>
</blockquote>
</aside>
<p>I am guessing there is a fairly low probability of that change so having a convenient package might be the second best option <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20">. and having it merged into phoenx so  --webpack to enable webpack  --npm to just use npm --gulp to use gulp would be nice.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="15746" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/potentially-removing-brunch-from-the-phoenix-new-template-generator/2454/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-15746" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="15746"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="15747" data-post-id="15747">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-Phoenix-Core-Team" data-username="chrismccord" data-post="13" data-topic="2454">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/chrismccord/48/24233_2.png" class="avatar"> chrismccord:</div>
<blockquote>
<p>I think the node world is painful no matter what approach you take and there’s no silver bullet.</p>
</blockquote>
</aside>
<p>Hear hear, that is why I’m trying to remove as much of it as I can.</p>
<aside class="quote group-Phoenix-Core-Team" data-username="chrismccord" data-post="13" data-topic="2454">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/chrismccord/48/24233_2.png" class="avatar"> chrismccord:</div>
<blockquote>
<p>My main concern with the proposed approach is you end up accidentally rebuilding brunch, but worse, with a hodgepodge of dependent scripts. I think it’s a great choice if it’s working well for you, but I remain unconvinced that it’s the best approach for the majority of users.</p>
</blockquote>
</aside>
<p>It is a way that many npm projects do things I’ve been noticing today.  It is not that you are rebuilding brunch, rather you are just calling the main interfaces that things like brunch try to hide from here (thus causing the plugins to be out of date, missing features, etc… etc…) from a shell-like interface (which can include calling a custom script via <code>node myScript</code> if you want, but I’ve not actually had to do that surprisingly).  Each npm shell entry in packages.json is just a single shell command each, with it documented that <code>&amp;&amp;</code>, <code>&lt;</code>, <code>&gt;</code>, and <code>|</code> will be supported on all shells on all platforms that the scripts run on, so keeping to that, using things like <code>rimraf</code> (like my clean command is <code>"clean": "rimraf priv/static/*",</code>) instead of rm -rf for multi-platform, then you are good and it works and you can easily tear things apart or run commands yourself to see exactly what they do.  No need for a multitude of plugins in whateverBuildSystem that may or may not be up to date (many in brunch are not), may or may not support the features you may need from the underlying library the plugin uses (many of my brunch plugins had not, hence why I’ve had to rewrite a few of them), when all is exposed fine through the normal node interface.  Like here was my elm plugin section in brunch-config.js:</p>
<pre data-code-wrap="javascript"><code class="lang-javascript">    elmBrunch: {
      elmFolder: '.',
      mainModules: [
        'web/elm/MessengerApp.elm',
        'web/elm/NotificationApp.elm'
      ],
      // If these next two are specified, all mainModules will be compiled to a single file (optional and merged with outputFolder)
      outputFolder: 'web/static/js',
      outputFile: 'elm.js',
      makeParameters: ['--warn', '--yes']
    },
</code></pre>
<p>The npm version is:</p>
<pre data-code-wrap="json"><code class="lang-json">"build:elm.js": "elm make web/elm/*.elm --output web/static/js/elm.js --warn --yes"
</code></pre>
<p>Elm cannot output to stdout, but nor can the brunch plugin or anything, and I was just converting the brunch style.  I’m thinking of changing the output style a bit.</p>
<p>I still find it funny that the elm make command takes over 40 seconds to compile (<code>find web/elm/ -iname '*.elm' | wc -l</code>) 31 files, yet <code>bsb.exe</code> (bucklescripts compiler) takes &lt; 1.5s to build (<code>find web/bucklescript -iname '*.ml' | wc -l</code>) 55 files and elm is (via <code>du</code>) is 190K (and compiles to 891K javascript, ~730K after minimization) and bucklescripts is 908k (I’ve built a very large library, compiles to 1.1megs javascript, ~280K after minimization, BS uses the javascript module system along with a design that is able to be optimized well, also it puts in a <em>lot</em> of comments, where elm output has no comments)).</p>
<aside class="quote no-group" data-username="andre1sk" data-post="14" data-topic="2454">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/andre1sk/48/1380_2.png" class="avatar"> andre1sk:</div>
<blockquote>
<p>I am guessing there is a fairly low probability of that change so having a convenient package might be the second best option <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20">. and having it merged into phoenx so  --webpack to enable webpack  --npm to just use npm --gulp to use gulp would be nice.</p>
</blockquote>
</aside>
<p>I know, I’m just trying to spur conversation.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>Currently it is mostly just ‘it should be easy’ but there has been no examples of talk on ‘how’ brunch/webpack is easier than npm, and currently I’m finding it to be the opposite, as well as faster.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="15747" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/potentially-removing-brunch-from-the-phoenix-new-template-generator/2454/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-15747" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="15747"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="15752" data-post-id="15752">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="josevalim" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/120/1787_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  josevalim
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Elixir</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="1" data-topic="2454">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>But yes, any thoughts as to removing brunch from the phoenix new template generator entirely and just using npm itself?  It reduces dependencies, its faster, its shorter, and its less confusing then the odd brunch config (which though nice once you understand it, is definitely confusing at first).</p>
</blockquote>
</aside>
<p>If we had replaced the assets engine every time someone found an allegedly new/better/faster solution, we would be on our 26th interaction with possibly no or little noticeable improvement. If brunch is not for you, then go and replace it by something else. We chose brunch for everyone who doesn’t want to care or cares very little about the js build tool.</p>
<p>This is the second or third time this week we are on the same discussion. <em>It does not help</em>. We have limited time and I would prefer to use that time in not rehashing topics that have already been debated in such short time span.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="15752" data-batch-url="/posts/batch_likers">
                        8
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/potentially-removing-brunch-from-the-phoenix-new-template-generator/2454/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-15752" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="15752"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="15756" data-post-id="15756">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sasajuric" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/120/991_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sasajuric
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Author of Elixir In Action</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-livebook_core_team" data-username="josevalim" data-post="16" data-topic="2454">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/48/1787_2.png" class="avatar"> josevalim:</div>
<blockquote>
<p>We chose brunch for everyone who doesn’t want to care or cares very little about the js build tool.</p>
</blockquote>
</aside>
<p>Just to back this claim, at my company we care little about js build tool, and brunch works perfectly for us. It provides a low ceremony out of the box experience that does the job gets out of the way. So I’m personally really happy with that. My understanding is that more demanding users can easily replace brunch with anything else, so I’m not sure why this topic is raised so frequently?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="15756" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/potentially-removing-brunch-from-the-phoenix-new-template-generator/2454/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-15756" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="15756"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="15758" data-post-id="15758">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="josevalim" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/120/1787_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  josevalim
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Elixir</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-livebook_core_team" data-username="josevalim" data-post="16" data-topic="2454">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/48/1787_2.png" class="avatar"> josevalim:</div>
<blockquote>
<p>It does not help.</p>
</blockquote>
</aside>
<p>To be a bit less negative and contribute more positively to the discussion: what would help is to document those steps in articles, blog posts and get people trying it out. The article someone shared a couple days ago about Webpack with Phoenix was great (and it was the first time I could understand how to configure Webpack).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="15758" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/potentially-removing-brunch-from-the-phoenix-new-template-generator/2454/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-15758" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="15758"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="15759" data-post-id="15759">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="andre1sk" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/andre1sk/120/1380_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  andre1sk
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I don’t think the issue is with demanding users <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20">, while not being an advocate of change I think the frequency of issue being raised still might be a good indicator that there might be a need for some solution.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="15759" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/potentially-removing-brunch-from-the-phoenix-new-template-generator/2454/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-15759" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="15759"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="15762" data-post-id="15762">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-livebook_core_team" data-username="josevalim" data-post="16" data-topic="2454">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/48/1787_2.png" class="avatar"> josevalim:</div>
<blockquote>
<p>We chose brunch for everyone who doesn’t want to care or cares very little about the js build tool.</p>
</blockquote>
</aside>
<p>That is what I’ve been curious about, it builds very poorly, no support of other processes, webcomponents, image processing (spritesheet generation, minimizing/optimizing), etc…  It essentially has support for javascript with babel, css (and for things like scss you have to choose to either output css or js, cannot have both), and an unprocessed asset path that is copied verbatim (no ability to have something like svg icons in node_modules somewhere auto-update, svg-minimize, and output an output svg file + css file).  The big issue however is how it randomly and often misses files as the project gets bigger when running on Windows (which is what started all of this), and that is even with just javascript.</p>
<p>Do feel free to ignore these though, it does work fine on at least linux for the simple purpose it is included for if not a bit verbosely.</p>
<aside class="quote no-group" data-username="sasajuric" data-post="17" data-topic="2454">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sasajuric/48/991_2.png" class="avatar"> sasajuric:</div>
<blockquote>
<p>Just to back this claim, at my company we care little about js build tool, and brunch works perfectly for us. It provides a low ceremony out of the box experience that does the job gets out of the way. So I’m personally really happy with that. My understanding is that more demanding users can easily replace brunch with anything else, so I’m not sure why this topic is raised so frequently?</p>
</blockquote>
</aside>
<p>It breaks often, and can be replaced with a single line (or two if you want watch support) in the npm package.json file, which will not break.  It provides a bad user experience that I’ve had to walk a few people through.</p>
<aside class="quote group-livebook_core_team" data-username="josevalim" data-post="18" data-topic="2454">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/48/1787_2.png" class="avatar"> josevalim:</div>
<blockquote>
<p>To be a bit less negative and contribute more positively to the discussion: what would help is to document those steps in articles, blog posts and get people trying it out. The article someone shared a couple days ago about Webpack with Phoenix was great (and it was the first time I could understand how to configure Webpack).</p>
</blockquote>
</aside>
<p>Heh, I actually used that article in my webpack testing (older than a few days?  Or a different one), but it ends up being even more verbose than gulp/brunch in its setup and configuration.  I am thinking of putting up something that documents it, would not be hard (need to make a new project, my structure is so changed up because certain javascript libraries are stupid and need specific things in specific places to build…).</p>
<aside class="quote no-group" data-username="andre1sk" data-post="19" data-topic="2454">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/andre1sk/48/1380_2.png" class="avatar"> andre1sk:</div>
<blockquote>
<p>I don’t think the issue is with demanding users <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20">, while not being an advocate of change I think the frequency of issue being raised still might be a good indicator that there might be a need for some solution.</p>
</blockquote>
</aside>
<p>I’ve not noticed others so it might be my fault?  Sorry for the bugging.  ^.^</p>
<p>But yeah, translating brunch to npm scripts should be easy, will try to find the time this weekend to document it up (my work is forcing me to stop working from home on weekends and instead use my free time as free time because of new laws going into effect in the USA, blehg, wasted time is what it is…).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="15762" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/potentially-removing-brunch-from-the-phoenix-new-template-generator/2454/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-15762" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="15762"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="15770" data-post-id="15770">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="peerreynders" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/peerreynders/120/5826_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  peerreynders
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="andre1sk" data-post="19" data-topic="2454">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/andre1sk/48/1380_2.png" class="avatar"> andre1sk:</div>
<blockquote>
<p>I think the frequency of issue being raised still might be a good indicator that there might be a need for some solution.</p>
</blockquote>
</aside>
<p>Not necessarily - often it’s just a case that people want to see <em>their favorite tool</em> supported, regardless of how appropriate that tool may be. In this particular case it just happened that an approach using smaller building blocks ended up being more effective under the circumstances.</p>
<aside class="quote no-group" data-username="andre1sk" data-post="14" data-topic="2454">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/andre1sk/48/1380_2.png" class="avatar"> andre1sk:</div>
<blockquote>
<p>convenient package might be the second best option <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20">. and having it merged into phoenx so  --webpack to enable webpack  --npm to just use npm --gulp to use gulp would be nice.</p>
</blockquote>
</aside>
<p>The issue is that such “convenience” comes with an opportunity cost - a cost that users of the Phoenix framework shouldn’t underestimate nor take for granted. Supporting only one single approach/tool is ultimately more effective; support of the other tools in the wild should really be left to the “evangelists” of those tools. How serious can you take anyone who would reject Phoenix because brunch is its default asset management tool?</p>
<p>[quote=“chrismccord, post:13, topic:2454”]<br>
My main concern with the proposed approach is you end up accidentally rebuilding brunch, but worse, with a hodgepodge of dependent scripts.[/quote]</p>
<p>I’m past the “remove brunch from Phoenix” discussion - there is no need to change it, especially given that it is so easy to replace if and when the need arises.</p>
<p>However in general this particular argument seems to favor monolithic tools over pipelined tools. I personally find the whole “batteries included” mindset a bit oversold, a holdover from commercial products where companies are trying to compete on the sheer number of features to the point that you are accepting a fair bit of bloat. Given that OSS is notorious for not settling on a standard, focusing on (quick to learn) single-responsibility tools that combine well with one another seems to be a reasonable approach, especially when you should be able to replace any part that is no longer pulling its weight (rather than replacing your entire build process because your monolithic tool is starting to show a key weakness in one particular area). Yes, it is absolutely possible to create “a hodgepodge of dependent scripts” but ultimately no tool (or set of tools) is a substitute for thinking.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="20" data-topic="2454">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>will try to find the time this weekend to document</p>
</blockquote>
</aside>
<p><img src="https://forum.elixirforum.com/images/emoji/apple/thumbsup.png?v=15" title=":thumbsup:" class="emoji only-emoji" alt=":thumbsup:" loading="lazy" width="20" height="20"></p>
<p>I think it is clear that the utility of npm scripts is often overlooked and I guess it is my overly idealistic hope that having people focus on “(quick to learn) single-responsibility tools that combine well with one another” could be a way to further increase the quality of tooling - hopefully to make the node/JS world just a little less painful.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="15770" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/potentially-removing-brunch-from-the-phoenix-new-template-generator/2454/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-15770" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="15770"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/2454/load_more?page=3">Load more posts (28 remaining)</a>
</div></template></turbo-stream>