Skip to content

Releases: bluwy/publint

v0.2.2

21 Aug 16:37
Compare
Choose a tag to compare

Features

  • Lint "typings" field file existence (#60)
  • Check packed files when globbing exports locally (#61)
  • Improve "browser" field suggestion for using "imports" and "exports" fields instead (#59)

Bug fixes

  • Lower deprecated trailing slash glob syntax as suggestion instead of a warning when it's used for backwards compatibility only (#62)
  • Suppress invalid globbed file format if has correct adjacent file
  • Fix extension replacement in messages
  • Improve invalid types format message and docs

Site

  • Fix invalid package name not found message
  • Highlight code blocks in rules page

New Contributors

  • @btea made their first contribution in #64

Full Changelog: v0.2.1...v0.2.2

v0.2.1

18 Aug 13:49
Compare
Choose a tag to compare

Bug fixes

  • Fix "types" condition check with "exports" array format
  • Disable packed files search when a vfs is passed
  • Fix "browser" field file existence extensions check
  • Fix file existence check with trailing slash

Site

  • Site-wide design touch-up
  • New "Popular packages" section
  • New package version select switcher (#56)
  • New navigation header design
  • Update bottom documentation for clarity
  • Improve repo URL parsing

New Contributors

Full Changelog: v0.2.0...v0.2.1

v0.2.0

26 Jul 15:40
Compare
Choose a tag to compare

Breaking changes

Note: If you're using publint from the CLI, these breaking changes should not affect you.

  • publint() now returns an object with messages instead of the messages array directly. This makes way for future APIs where publint will return more information than just messages.

    - const messages = await publint()
    + const { messages } = await publint()
  • Rename printMessage API to formatMessage to better reflect it's intent. (#43)

    - import { printMessage } from "publint/utils"
    + import { formatMessage } from "publint/utils"
    
    const { messages } = await publint()
    
    for (const message of messages) {
    - console.log(printMessage(message))
    + console.log(formatMessage(message))
    }
  • Remove filePath arg for the FILE_DOES_NOT_EXIST message.

    import type { Message } from "publint"
    import { getPkgPathValue } from "publint/utils"
    
    function messageToString(message: Message, pkg: Record<string, any>) {
      switch (message.code) {
        case "FILE_DOES_NOT_EXIST":
    -     return `The file "${message.args.filePath}" does not exist.`
    +     return `The file "${getPkgPathValue(pkg, message.path)}" does not exist.`
      }
    }
  • Remove the import condition for the publint package. This provides a better error message if you call require("publint").

Features

  • Improve warnings when the exported "types" condition has an invalid format in ESM or CJS. This ensures your library's types will work in both environments when dual publishing. (#46)

    It affects packages commonly packaged like:

    {
      "exports": {
        ".": {
          "types": "./index.d.ts", <-- only works in CJS
          "import": "./index.mjs",
          "require": "./index.js",
        }
      }
    }

    For more information, visit the rules documentation. This feature is inspired by https://arethetypeswrong.github.io.

Bug fixes

  • Suppress warnings when exported JS files using the "exports" field have adjacent .d.ts files and no "types" condition. This follows TypeScript's resolution algorithm. For more information, visit the rules documentation. (#46)

Full Changelog: v0.1.16...v0.2.0

v0.1.16

05 Jul 15:52
Compare
Choose a tag to compare

Bug fixes

  • Don't enforce the module condition to precede import per se. It is now ensured to precede require only as otherwise the condition isn't effective (#50)

Full Changelog: v0.1.15...v0.1.16

v0.1.15

02 Jul 15:29
Compare
Choose a tag to compare

Bug fixes

  • Fix "precede" typo

Full Changelog: v0.1.14...v0.1.15

v0.1.14

02 Jul 15:26
Compare
Choose a tag to compare

Features

  • Check that the "module" condition precedes the "import" and "require" in exports conditions (#49)

Bug fixes

  • Skip linting flow files
  • Improve exports array logging format

Site

  • Fix isPathDir check

New Contributors

  • @nvie made their first contribution in #49

Full Changelog: v0.1.13...v0.1.14

v0.1.13

29 Jun 08:29
Compare
Choose a tag to compare

Bug fixes

  • Fix "types" condition-is-first check when there's preceding conditions that has it's "types" condition too. This is common for dual ESM-CJS packages where "types" are located within "require" and "import" conditions. (#47)
  • Temporarily skip "types" condition check when "typesVersions" key exist. The "typesVersions" key requires a complex resolution algorithm that is harder to implement, so a quick patch is applied to remove the false errors for now. (#42)

Full Changelog: v0.1.12...v0.1.13

v0.1.12

20 May 08:20
Compare
Choose a tag to compare

Features

  • Support --strict flag in CLI to elevate warnings as errors (#38)

Bug fixes

  • Handle .native.js extensions correctly (#41)

Site

  • Fix search input autocapitalize and autocorrect on mobile

Full Changelog: v0.1.11...v0.1.12

v0.1.11

20 Mar 18:15
Compare
Choose a tag to compare

Features

  • Lint types not exported in exports field for "moduleResolution": "bundler" (#34)

Site

Full Changelog: v0.1.10...v0.1.11

v0.1.10

04 Mar 10:13
Compare
Choose a tag to compare

Features

  • Relax file format checks by file path names. For example, a file path that contains browser, node, bundler, etc, likely means they are meant to work in that respective environment only.

Bug fixes

  • Support multiple glob star in exports value. (#33)
  • Support publishConfig overrides when linting locally. (#28)

Site

  • Improve rules documentation
  • Improve code readability

New Contributors

Full Changelog: v0.1.9...v0.1.10