Skip to content

Skip file write if file content isn't changed #320

Description

@MartijnCuppens

If the input is the same as the output CSS and the --replace flag is passed, the file is always overridden. Can we somehow prevent this from happening?

The issue I have now is that I have another watcher on these files which detect file changes even if the content is not changed.

postcss-cli/index.js

Lines 222 to 227 in 42fc85e

tasks.push(fs.outputFile(options.to, result.css))
if (result.map) {
const mapfile = getMapfile(options)
tasks.push(fs.outputFile(mapfile, result.map))
}

We could wrap these lines with a simple check to prevent the file write from happening:

if (result.css !== css.toString('utf8')) {
  tasks.push(fs.outputFile(options.to, result.css))

  if (result.map) {
    const mapfile = getMapfile(options)
    tasks.push(fs.outputFile(mapfile, result.map))
  }
}

Not sure if we can better add a new option or do this check by default, what do you think?

Activity

  1. RyanZim commented on Mar 24, 2020

    @RyanZim
    Collaborator

    Don't see a good reason not to do this by default; PR welcome.

  2. added a commit that references this issue on Nov 29, 2021
    86d1f11
  3. kentcdodds commented on Nov 29, 2021

    @kentcdodds
    Contributor

    @MartijnCuppens, I've opened #417 which solves this in a more general way. If I'm not mistaken, what you were asking for is:

    if the input is the same as the output then don't save the file

    What I built is:

    if the output is the same as what's currently in the output then don't save the file.

    I think what I have in #417 satisfies what you're looking for and solves a significant annoyance for me at the same time :)

  4. added a commit that references this issue on Dec 10, 2021
    b06fa80
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions