The 1,468-Day Suicide Note: Why Your SPFx Build is a Security Ghost Ship

1,958 words, 10 minutes read time.

You want to talk about the stack? Fine. We’re staring down the barrel of the SharePoint Framework (SPFx) toolchain—a bloated, rotting carcass of npm dependencies that would make a seasoned systems architect weep. You haven’t even touched your keyboard to define a single props interface yet, and your Black Duck scan is already screaming like a server room with a blown coolant line. You’re looking at hundreds of “High” and “Critical” vulnerabilities, and you’re paralyzed because you know the truth: if you try to fix them, you’ll snap the brittle spine of the Microsoft build engine.

The thesis is simple: Modern web development is a house of cards built on a foundation of unvetted, legacy garbage, and your job isn’t to reach “zero vulnerabilities”—it’s to master the art of tactical risk and architectural integrity in a broken system. Most of you handle this like cowards, either ignoring the red text until it’s too late or blindly running npm audit fix --force like a child playing with a loaded gun. We are going to break down the “Dirty Third-Party” reality, the failure of the “Vendor-Locked” mindset, and the structural collapse of the transitive dependency tree.

Before we dive into the wreckage, understand this: your career lives or dies in the node_modules folder. If you don’t know what’s running on your build agent, you aren’t an engineer; you’re just a script-kiddy with a LinkedIn premium account. We’re going to look at the three primary failure points that are leaking memory and security into your professional life: the False God of the Toolchain, the Dependency Debt Trap, and the cowardice of the “Just-In-Time” Developer.

The False God of the Toolchain: Why “Out of the Box” is Already Broken

When you run @microsoft/sharepoint, you’re not just downloading a framework; you’re inviting a thousand strangers into your codebase, and half of them are carrying pathogens. The SPFx toolchain is a monolithic beast built on Gulp, Webpack, and the Yeoman generator—technologies that, in the fast-moving world of JavaScript, are practically ancient artifacts. Microsoft “locks” these versions to ensure that when you run gulp bundle, the machine actually produces a file. But that stability comes at a visceral cost: security debt.

The direct dependencies Microsoft hands you are the tip of the iceberg, but the real rot is in the transitive dependencies—the dependencies of your dependencies. You see a “High” risk in a library like minimist or ajv and your first instinct is to patch it. Don’t. You’re working in a sandbox designed by Redmond, and that sandbox has walls you didn’t build. If you force an update on a deep-level utility library to satisfy a Black Duck scan, you’ll often find that the Gulp tasks responsible for manifest generation or localized resource mapping simply stop working.

This is the hard truth of the “Vendor-Locked” reality: Microsoft values a working build over a clean scan. They are shipping you a factory floor that was built three years ago, and they expect you to produce modern results on it. If you’re a junior, you’ll panic and try to fix the factory. If you’re a veteran, you’ll realize that the factory is a controlled environment. The “High” risk vulnerabilities in the build tools—things like Regular Expression Denial of Service (ReDoS)—are technically threats, but they require an attacker to control the input to your build script. If an attacker is already sitting on your build agent, you’ve already lost the war; the “vulnerable” npm package is just a footnote in your obituary.

You have to develop the technical discipline to distinguish between “Production Risk” and “Tooling Noise.” The code that actually ships in your .sppkg file is a fraction of what lives in your node_modules. If a vulnerability exists in a library used only during the minification process, it never reaches the end user’s browser. It never touches the SharePoint REST API. It never sees the light of day. Learning to document this “Accepted Risk” is what separates the architects from the code-monkeys who just want the red lights to turn green so they can go home.

The Heft Illusion: New Engine, Old Exhaust

Heft was supposed to be the savior of the SharePoint Framework—a rigorous, multi-project build system designed to bring sanity to the chaos of the Rush Stack. But here’s the hard truth: Heft is just a high-velocity delivery system for the same legacy rot. It doesn’t matter how fast the engine turns if the fuel is contaminated. Even in the latest 2026 releases of SPFx, Heft still sits on top of a mountain of transitive dependencies that Black Duck will tear apart before you can even run your first local serve.

The problem is systemic. Heft uses a “rig” system to standardize builds across projects, but those rigs are tied to specific versions of TypeScript, ESLint, and API Documenter. When you pull down the latest SPFx version, you’re still pulling in deep-nested libraries like glob-parent, trim-newlines, or loader-utils that have CVEs dating back to when you still had hair. Microsoft’s engineers have prioritized “build reproducibility” over “security hygiene.” They want to ensure that if a developer in London and a developer in Tokyo run the same command, they get the exact same byte-for-byte output. To achieve that, they freeze the version tree, effectively preserving vulnerabilities like they’re insects in amber.

Why isn’t Microsoft fixing this? Why isn’t their omnipotent Copilot writing new packages or refactoring the dying ones? Because Microsoft is obsessed with backward compatibility. They are terrified of breaking the billions of lines of enterprise code already running in SharePoint Online. They aren’t “fixing” the old toolchain; they are abandoning it in favor of a newer, leaner SPFx CLI, but until that transition is complete, you are stuck guarding a graveyard.

If you can’t handle the cognitive dissonance of a “dirty” scan and a “clean” deployment, you aren’t ready for enterprise-scale architecture. You have to be able to look a security lead in the eye and explain that the heft-sass-plugin‘s dependency on a vulnerable version of node-sass is irrelevant because the SASS is compiled to CSS before it ever leaves your machine. Integrity in code mirrors integrity in life: it’s about knowing what truly matters and what is just noise designed to distract the weak.

The Transitive Debt Trap: 1,468 Days of Stagnation

The final insult in the SPFx ecosystem is the transitive dependency—the friend of a friend who turns out to be a thief. This is our main thesis in a nutshell: you are inheriting legacy failure. Look no further than serialize-javascript version 6.0.2. This package is a common transitive dependency in the toolchain, and it was released on May 5, 2022. As of today, May 12, 2026, that code has been sitting in your stack for exactly 1,468 days.

Think about that number. For 1,468 days, this dependency has sat unchanged while the security landscape shifted under its feet. It is the smoking gun of vendor negligence. You are running 4-year-old code in a 2026 environment, and you can’t swap it out because the rest of the factory—Heft, the compilers, the minifiers—has been “tuned” to that specific, 1,468-day-old behavior. This isn’t just “npm noise”; it is a systemic failure to maintain the very tools we use to build the future.

You might ask, “Why don’t they just use AI to fix the dead ones?” Because AI-generated patches for structural dependencies require an astronomical level of regression testing that Microsoft isn’t willing to pay for. It’s cheaper for them to let you deal with the Black Duck report than it is for them to risk an AI-generated bug in the TypeScript compiler. They’ve outsourced the headache to you. This technical debt is massive, but the psychological debt is worse. Developers who rely entirely on automated scans are outsourcing their judgment to a machine.

In the SPFx world, transitive dependencies like serialize-javascript are a test of your resolve. You have to audit the audit. You have to trace the dependency path and prove that the vulnerable code path is never actually executed. Refactoring a life is like refactoring a dependency tree. You have to identify the toxic influences that were “installed” years ago—habits, excuses, and lazy shortcuts—and you have to have the courage to cut them out, even if it feels like the whole system might crash. If you’re willing to ship a project with 400 “High” risks just because “that’s how Microsoft made it,” you’re demonstrating a lack of professional pride.

The Protocol of the Unbroken Build

We’ve stripped the SPFx toolchain down to its rusted frame. We’ve looked at the “High” risks in the npm depths, the illusion of the Heft build system, and the 1,468-day trap of transitive debt. The hard truth is that the “perfect” scan is a lie. In the real world of SharePoint architecture, you are always operating in a state of partial failure. The question is: do you have the technical and personal stability to manage that failure, or does it manage you?

Stop looking for the “Update All” button. It doesn’t exist. Your career isn’t a series of successful npm installs; it’s a series of deployments that held up under load despite the flaws in the foundation. You need to stop being a “consumer” of frameworks and start being a “governor” of your environment. When Black Duck screams, you don’t panic. You analyze. You document. You defend.

The protocol for moving forward is simple, but it requires a level of discipline most of your peers lack. First, isolate your production dependencies from your build-time tools. Second, master the overrides or resolutions field in your package.json for the 1% of vulnerabilities that actually pose a runtime threat. Third, stop making excuses. If your deployment is blocked, it’s not Microsoft’s fault—it’s your failure to communicate the technical reality to your leadership.

Get back in the trenches. Audit your node_modules. Know your enemy. And for the love of the kernel, stop running code you haven’t vetted. The system only works if you do.

Call to Action: Stop being a silent passenger in a failing pipeline.

Microsoft’s reliance on 1,468-day-old vulnerabilities isn’t just a “technical constraint”—it’s a choice to prioritize legacy convenience over your security posture. It’s time to stop making excuses for a multi-billion dollar vendor and start holding the line. Every time you accept a “High” risk in a toolchain that could be fixed with a focused sprint and a bit of Copilot-driven refactoring, you are validating mediocrity.

  • Open the Ticket: Go to the SPFx GitHub Issues and the Microsoft 365 Developer Feedback portals. Don’t just report a bug—demand a modernized, decoupled toolchain that isn’t tethered to the corpses of dead npm modules.
  • Expose the Math: Show your leadership the raw numbers. Use the “1,468-day” metric. Show them that you are being forced to defend code released half a decade ago. Let the business pressure flow upward to the vendor.
  • Refuse the Rot: If we keep quiet, the “monthly cleanup” will remain a surface-level PR stunt. Push for a toolchain where security is baked in, not patched over with waivers.
  • The “Dark Matter” of the codebase only stays dark if you refuse to shine a light on it. It’s time to stop treating Microsoft like a protected entity and start treating them like a vendor that needs to earn your trust back.

    CTA HERE

    SUPPORTSUBSCRIBECONTACT ME

    D. Bryan King

    Sources

    Disclaimer:

    The views and opinions expressed in this post are solely those of the author. The information provided is based on personal research, experience, and understanding of the subject matter at the time of writing. Readers should consult relevant experts or authorities for specific guidance related to their unique situations.

    #architect #BlackDuckScan #buildTimeDependencies #CICDSecurity #codeAudit #codingStandards #CVE #dependencyHell #dependencyRot #devdependencies #DevSecOps #EnterpriseArchitecture #Gulp #HeftBuildSystem #JavaScriptSecurity #LeadDeveloper #legacyCode #Microsoft365Development #MicrosoftToolchain #nodeModules #npmAudit #npmOverrides #npmVulnerabilities #packageLockJson #patchManagement #productionRisk #prototypePollution #ReDoS #riskMitigation #RushStack #SBOM #SCA #securityDebt #securityWaiver #serializeJavascript #SharePointDevelopment #SharePointFramework #softwareBillOfMaterials #SoftwareCompositionAnalysis #softwareEngineering #softwareSupplyChain #SPFx #technicalDebt #transitiveDependencies #TypeScriptBuild #vulnerabilityManagement #webPartSecurity #Webpack #YeomanGenerator #zeroDay

    I was reminded that there was a M7.4 precursor 2days before the 3.11 earthquake M9.0 one

    #gulp

    Por fin me he quitado de encima un potencial problema que me traía de cabeza. El tema de una aplicación crítica ahora se visualiza decentemente y es operativo en el #Webview que usa Microsoft en sus aplicaciones.

    La solución es algo enrevesada: incluye un pipeline complejo con #gulp y #webpack usando #SASS, #PostCSS, transpilación de módulos JavaScript, un par de #polyfills, un #ponyfill, una pizca de magia arcana y varios artificios quirúrgicos. Dista de ser perfecta pero por lo menos es funcional.

    SPFx Developers, Say Goodbye to Gulp: Why Heft Will Save Your Sanity

    1,401 words, 7 minutes read time.

    If you’ve spent years stuck in the weeds wrestling with gulpfile.js, debugging that dozen‑line custom task that mysteriously broke your build, or railing against the sluggish build performance — you’ll feel like a kid let loose in a high‑end garage with new power tools when you first wrap your head around Heft.

    At its core, this change represents a paradigm shift in how SPFx projects are built, extended, and maintained. We’re moving from a custom JavaScript‑scripted build process to a config‑driven, plugin‑rich, standardized build orchestrator. This isn’t incremental; it’s foundational — like if your favorite wrench suddenly refused to fit a bolt and handed you a socket set that works flawlessly every time.

    Here’s how the rest of this ride will unfold: first, we’ll parse the shift from Gulp to Heft, then we’ll dig into what Heft actually gives you (beyond just being new), and finally we’ll break down what this means for you and your team’s productivity, customization habits, and code hygiene. Buckle up — this one’s technical, conversational, and written for folks who live in terminals and understand build toolchains like muscle memory.

    Why the SPFx World Is Ditching Gulp for Heft

    Let’s be honest — gulp has been both a blessing and a curse. Back in the day, gulp gave SPFx developers a way to script build tasks, compress assets, run linters, and package solutions in a way that fit nicely into the JavaScript ecosystem. It was flexible, it was familiar, and for the longest time, we all bent our workflows around gulp’s task runner mentality.

    But here’s the hard truth: gulp’s flexibility was also its Achilles’ heel. Every team wound up with slightly different scripts, custom tasks, and quirky hacks deep in gulpfile.js. Pretty soon, builds weren’t just builds — they were spaghetti logic sprawled across plugins, custom tasks, and dependency quirks.

    Microsoft acknowledged this problem. Starting with SPFx v1.22, the ecosystem shifted to a Heft‑based build toolchain, moving gulp out of the center of the SPFx universe. Heft isn’t just another task runner. It’s a config‑driven orchestrator that unifies the major pieces — TypeScript, Webpack, ESLint, Jest — under a consistent JSON‑based build schema. Your builds become predictable, optimized, and easier to reason about across teams.

    The shift wasn’t done on a whim. Behind the scenes, Microsoft recognized that SPFx had to evolve if it wanted to remain relevant in the modern JavaScript landscape. Gulp’s reliance on handwritten scripts and less structured task ordering simply doesn’t scale with the size and complexity of today’s front‑end builds.

    So they did something bold: they said, “Let’s stop relying on bespoke scripts and give developers a real build engine — something that’s opinionated, consistent, and built for scale.”

    And that’s Heft.

    Heft: What It Really Is (And Why You Should Care)

    Heft might look like just another CLI tool if you’ve ever worked with npm scripts or CLI build tools before, but below the surface it’s a smarter beast.

    First, Heft replaces the gulpfile.js script paradigm with declarative JSON configuration files like heft.json and rig.json, meaning your build tasks are cleaner, predictable, and shareable. Instead of writing procedural JavaScript to orchestrate tasks, you describe what you want and let Heft handle the details. This flips the build from imperative scripting to declarative configuration.

    Second, it standardizes build behavior across SPFx projects. If you’re on a team where one developer’s build works locally but fails on CI, that kind of inconsistency has to die. Heft’s configuration model helps ensure that build results don’t vary from machine to machine — the sort of predictability that separates decent teams from elite ones.

    Third, Heft gives you performance boosts out of the box. Parallel task execution, intelligent caching, and incremental compilation are hallmarks of a modern build system. You’ll see faster builds not by accident, but by design.

    Fourth, the shift keeps Webpack where it belongs — as your bundler, not your task orchestrator. Under gulp, Webpack was often hidden behind layers of scripts. With Heft, Webpack gets surfaced through structured configuration and plugins, giving you far more control without the messy glue code.

    All these improvements squarely benefit developers who are serious about automation, clean tooling, and healthy codebases. It’s like trading in a beat‑up old truck with custom duct‑taped modifications for a finely tuned performance machine where every part has been engineered purposefully.

    The Real Impact for You on the Ground

    Now, you’re probably asking: “Okay, great — but what does this actually mean when I’m coding?”

    Let’s break that down.

    When you create a new SPFx project using the Yeoman generator (v1.22+), Heft becomes your primary build engine by default — gulp remains only as a legacy option. That means things like heft build, heft start, and heft test replace gulp commands. Your package.json scripts shift accordingly, moving away from gulp tasks toward Heft invocations.

    Customization becomes cleaner. No more buried custom logic in gulpfile.js with half a dozen bespoke plugins. Instead, you extend behavior through Heft plugins or JSON configs. For teams that have struggled with build drift, this is a massive breath of fresh air.

    Even better: Heft integrates more naturally with modern tooling ecosystems. That means Webpack 5, updated TypeScript support, standardized linting, and a pathway toward future enhancements without the fragile scaffolding that gulp scripts often create.

    And if you’re thinking “But I’ve got a massive legacy codebase with custom gulp logic!” don’t panic. There’s a documented migration path. Microsoft’s docs show how to uninstall Gulp dependencies, install the Heft rig, migrate build configs, and test the new toolchain — so you’re not left in the sticks without a map.

    Bottom line? The days of wrestling with handcrafted build scripts are ending. In their place is a more robust, faster, and standardized build pipeline that aligns SPFx with modern frontend tooling practices.

    Conclusion: Time to Get Comfortable with Heft

    Look, if you’ve ever spent a day staring at an obscure gulp error that only showed up in CI, or if you’ve ever zipped up a build only to discover that webpack was being driven by an untested grunt script, then this transition to Heft should feel like clarity after chaos.

    The new Heft‑based toolchain isn’t just another tool, it’s a strategic shift toward a cleaner, faster, and more maintainable build ecosystem for SPFx developers. Where gulp once gave us flexibility, Heft gives us consistency — and trust me, for a room full of programmers who live and breathe tooling, consistency feels like victory.

    We’ve walked through why the shift is happening, what Heft actually is, and how it affects your workflow. So now it’s on you to explore Heft configs, experiment with plugins, and start thinking of your builds as declarative blueprints instead of imperative scripts. It’s like upgrading your toolbox: sure, the old tools still work — but once you go torque wrench, it’s tough to go back.

    If you’re fired up to go deeper, leave a comment below and share how your team is handling the Heft transition. If you’re still stuck on gulp legacy projects and want practical migration guidance, reach out directly — I’d love to help. And don’t forget to subscribe to the newsletter for expert posts like this delivered right to your inbox.

    Let’s build cleaner, faster, and smarter.

    — Cheers, and keep coding.

    Call to Action

    If this post sparked your creativity, don’t just scroll past. Join the community of makers and tinkerers—people turning ideas into reality with 3D printing. Subscribe for more 3D printing guides and projects, drop a comment sharing what you’re printing, or reach out and tell me about your latest project. Let’s build together.

    D. Bryan King

    Sources

    SharePoint Framework Toolchain: Heft‑based (Microsoft Learn)
    SharePoint Framework Legacy Toolchain: Gulp‑based (Microsoft Learn)
    Migrate from the Gulp‑Based to the Heft‑Based Toolchain (Microsoft Learn)
    Set Up Your SharePoint Framework Dev Environment (Microsoft Learn)
    Set Up Your SPFx Gulp Dev Environment (Microsoft Learn)
    Customize Build Toolchain with Gulp Tasks (Microsoft Learn)
    Extending Webpack in Gulp Toolchain (Microsoft Learn)
    Provision Assets in SPFx (Microsoft Learn)
    Understanding the Heft‑Based Toolchain (Microsoft Learn)
    Microsoft Dev Blog: SPFx 1.22 General Availability
    Heft and Rig: The New Build Architecture of SPFx
    SPFx Development Overview (AlphaBOLD)
    Modernizing SPFx Development: Heft Transition

    Disclaimer:

    The views and opinions expressed in this post are solely those of the author. The information provided is based on personal research, experience, and understanding of the subject matter at the time of writing. Readers should consult relevant experts or authorities for specific guidance related to their unique situations.

    Related Posts

    #Gulp #Heft #HeftConfiguration #HeftToolchain #HeftVsGulp #SharePointDev #SharePointFramework #SharePointGulp #SharePointHeft #SharePointSPFx #SPFx #SPFx2026 #SPFxAutomation #SPFxBestPractices #SPFxBuild #SPFxBuildCaching #SPFxBuildErrors #SPFxBuildSystem #SPFxBuildsFaster #SPFxCICD #SPFxCLI #SPFxConfiguration #SPFxDebugging #SPFxDeclarativeBuild #SPFxDevEnvironment #SPFxDeveloperGuide #SPFxDevelopment #SPFxDocumentation #SPFxExpert #SPFxExtensibility #spfxGulp #SPFxHeft #SPFxIncrementalBuild #SPFxMigration #SPFxMigrationGuide #SPFxModernization #SPFxOptimization #SPFxPerformance #SPFxPluginSystem #SPFxPlugins #SPFxProjectSetup #SPFxStarterProject #SPFxTaskRunner #SPFxTeamWorkflow #SPFxTips #SPFxToolchain #SPFxTools #SPFxTraining #SPFxTricks #SPFxTutorial #SPFxUpgrade #SPFxWorkflow #SPFxYeoman #TypeScriptSPFx #WebpackSPFx

    SPFx Deployment Demystified: Step-by-Step for Developers Who Mean Business

    686 words, 4 minutes read time.

    The world of SharePoint Framework (SPFx) development has come a long way since its inception, but for many developers, the process of deploying and managing these solutions remains shrouded in
    mystery.

    Introduction

    As a developer, understanding SPFx deployment is crucial to delivering high-quality, scalable, and secure solutions. In this article, we’ll delve into the step-by-step process of deploying SPFx projects, covering the key considerations, technical nuances, and best practices that will help you master this essential skill.

    Pre-Deployment Planning

    Before embarking on your deployment journey, it’s essential to plan carefully. This involves understanding your target environment, identifying any dependencies or prerequisites, and choosing the right tools and resources for the job.

    const manifest = require('./manifest.json');console.log(manifest);

    Setting Up Your Environment

    To deploy an SPFx solution, you’ll need to set up your development environment. This includes installing the necessary tools, such as Yeoman, gulp, and the SharePoint Framework CLI.

    npm install -g @microsoft/generator-sharepointgulp new project

    Building and Packaging Your Solution

    Once you’ve set up your environment, it’s time to build and package your SPFx solution. This involves creating a package file (.sppkg) that contains all the necessary files and dependencies.

    gulp package-solution

    Deploying Your Solution

    The deployment process itself is where things can get complex. You’ll need to consider factors such as security, permissions, and scalability. In this section, we’ll explore some best practices for deploying SPFx solutions in a production environment.

    const deploy = require('@microsoft/sp-deployment-webpack');deploy(manifest, { env: 'prod' });

    Post-Deployment Tasks

    After deployment, there are several tasks to complete. These include configuring security settings, testing the solution, and monitoring performance.

    const config = require('./config.json');console.log(config);

    Best Practices and Patterns

    Throughout this article, we’ve highlighted some key considerations for deploying SPFx solutions. However, there are many more best practices and patterns to explore. In this section, we’ll discuss some additional strategies for improving the overall quality and
    reliability of your deployments.

    Reflection / Challenge

    • What are some common pitfalls or challenges you’ve encountered when deploying SPFx solutions in the past?
    • How do you ensure that your solution is scalable and secure in a production environment?
    • Can you think of any additional tools or resources that would make the deployment process easier or more efficient?

    Conclusion / Next Steps

    Deploying SPFx solutions requires careful planning, attention to detail, and a deep understanding of the underlying technology. By following the steps outlined in this article, you’ll be well on your way to mastering this critical skill. However, there’s always more to learn, so we recommend exploring additional resources and best practices for continued growth and improvement.

    Next Steps: Take some time to review the code examples and best practices outlined in this article. Experiment with different deployment scenarios and test your skills on a small project before tackling a larger solution. And don’t be afraid to ask questions or seek guidance from more experienced developers!

    Call to Action

    If this post sparked your creativity, don’t just scroll past. Join the community of makers and tinkerers—people turning ideas into reality with 3D printing. Subscribe for more 3D printing guides and projects, drop a
    comment
    sharing what you’re printing, or reach out and tell me about your latest project. Let’s build together.

    Sources

    Disclaimer:

    The views and opinions expressed in this post are solely those of the author. The information provided is based on personal research, experience, and understanding of the subject matter at the time of writing. Readers should consult relevant experts or authorities for specific guidance related to their unique situations.

    Related Posts

    #MicrosoftGeneratorSharepoint #azure #bestPractices #cloudSolutions #configJson #deployment #deploymentScript #devEnvironment #devops #environmentVariables #Gulp #gulpNewProject #gulpPackageSolution #gulpWebpack #JavaScript #management #manifestJson #microsoft365 #nodejs #npmInstall #npmUpdate #office365 #onPremisesDeployment #patterns #performanceMonitoring #productionEnvironment #reliability #scalability #security #securitySettings #sharepointAdministration #SharePointFramework #sharepointFrameworkCli #SharePointScalability #SharePointSecurity #softwareDevelopment #solutionPackage #SPFxDevelopment #sppkgFile #testing #WebDevelopment #webpackBundle #Yeoman

    Might try for 24 hours without screens. #gulp #sansecrans
    [shuts down pc]
    Update and shutdown..?
    Ok
    Err. Hang on. I thought you said you weren't updating windows any more.
    #gulp
    Reading about #LaravelMix (https://laravel-mix.com/) - it reminds me of #Gulp, which I dumped because lack of plugins were holding me back and I could do everything with #NPM scripts anyway.
    But this freedom from complicated #Webpack config that I don't need/really understand is compelling. I wonder if a move back to something a little comfier is wise? Anyone hit any walls with this approach? #Laravel
    Laravel Mix

    An elegant wrapper around Webpack for the 80% use case.

    @graves501 The projects previously used #gulp, #sass and #webpack.
    I chose #npm because I am the only maintainer and really just wanted something super basic.
    I am not up to speed, but I regularly run audits and try to fix issues. 🫣 I should read up on it, I guess. 🤔