On ഞാ, സെപ്റ്റം 12, 2021 at 18:29, Yadd <[email protected]> wrote:
Hi all,

some recent updates switched from CommonJS to ESM ("type: module"). I
found a way for node-strip-json-comments which can be applied to most of
Sindre Sorhus modules:

 1. build a commonjs file:

        babeljs -o index.cjs index.js
        perl -i -pe 's/^export default/module.exports =/' index.cjs

 2. adapt package.json:

        --- a/package.json
        +++ b/package.json
        @@ -11,7 +11,12 @@
                        "url": "https://sindresorhus.com";
                },
                "type": "module",
        -       "exports": "./index.js",
        +       "exports": {
        +               "import": "./index.js",
        +               "require": "./index.cjs"
        +       },
        +       "main": "./index.cjs",
        +       "module": "./index.js",
                "engines": {
                        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
                },
        @@ -20,6 +25,7 @@
                        "bench": "matcha benchmark.js"
                },
                "files": [
        +               "index.cjs",
                        "index.js",
                        "index.d.ts"
                ],

For more complex packages, see
https://www.sensedeep.com/blog/posts/2021/how-to-create-single-source-npm-module.html

I don't think this approach (tryng to support two versions of everything) is really sustainable, for one or two packages it would be fine. We should look at it like any breaking major version update and try to update reverse dependencies to new APIs (switch to import from require) and only if that is too much work, we should try to support both versions.

With nodejs supporting ESM natively, we should try to avoid as much of build steps as possible.



--
Pkg-javascript-devel mailing list
[email protected]
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-javascript-devel

Reply via email to