Skip to content

Releases: bluwy/publint

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

v0.1.9

23 Jan 10:04
Compare
Choose a tag to compare

Features

  • Add new rule to check if a file is referenced in package.json but is not published. (#22)
  • Export printMessage from publint/utils to log the default message from the publint() results. Works in Node.js only (for now). Convenient when re-implementing the CLI but running it programmatically. (#23)

Bug fixes

  • Fix ESM main suggestion check. Previously, if main is ESM it will suggest to use exports instead. While this is good, it's not necessary if the package already has an exports, as main can still be kept for backwards compatibility. Now it will only suggest if there's no exports since ESM packages should take advantage of the new field whenever possible.
  • Fix types export so autocompletion when importing publint/utils works.

Site

  • Enable quick linking in rules page
  • Refactor to write rules in markdown

Full Changelog: v0.1.8...v0.1.9