Giter Club home page Giter Club logo

Comments (2)

arcanis avatar arcanis commented on August 22, 2024

That's not a bug, and that's not something I think we should add complexity to support.

from berry.

Tatsh avatar Tatsh commented on August 22, 2024

As a workaround, I made a simple plugin to run prettier after all installed:

import { cwd as cwdFunc, stdout, stdin, stderr } from 'process';
import { Configuration, Hooks, Project, scriptUtils } from '@yarnpkg/core';
import { getPluginConfiguration } from '@yarnpkg/cli';
import { PortablePath } from '@yarnpkg/fslib';

// The documentation says to use `const plugin: Plugin = {...}; export.default = plugin` but this
// does not work. Explicit `module.exports` does.
module.exports = {
  factory: (): { hooks: Hooks } => ({
    hooks: {
      afterAllInstalled(project: Project): void {
        void (async () => {
          const cwd = cwdFunc() as PortablePath;
          const configuration = await Configuration.find(cwd, getPluginConfiguration());
          const { locator } = await Project.find(configuration, cwd);
          const packageAccessibleBinaries = await scriptUtils.getPackageAccessibleBinaries(
            locator,
            {
              project,
            },
          );
          if (!packageAccessibleBinaries.get('prettier')) {
            throw new Error('Prettier not found.');
          }
          const ret = await scriptUtils.executePackageAccessibleBinary(
            locator,
            'prettier',
            ['--log-level', 'error', '-w', 'package.json', '.yarnrc.yml'],
            { cwd, packageAccessibleBinaries, project, stderr, stdin, stdout },
          );
          if (ret !== 0) {
            throw new Error(`Prettier returned non-zero: {ret}.`);
          }
        })();
      },
    },
  }),
  name: 'plugin-prettier-after-all-installed',
};

The reason for this is because I have a hook in pre-commit to check that yarn.lock is valid against package.json. The formatting done by Yarn leads to a false positive.

repos:
  - hooks:
      - entry: yarn install --check-cache --immutable
        files: ^package\.json$
        id: yarn-check-lock
        language: system
        name: check yarn.lock is up-to-date
        pass_filenames: false

from berry.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.