package.json 导出、导入和自引用

Node.js 支持 用于在 package.json 中定义入口点的新字段,称为 "exports"。该字段是在 package.json 中定义 "main" 的更强大的替代方法,并且可以控制您的包的哪些部分暴露给引用者。

Node.js supports a new field for defining entry points in package.json called "exports". This field is a more powerful alternative to defining "main" in package.json, and can control what parts of your package are exposed to consumers.

Xd5AoEpAG/VSPErRDESsKkEurOxnLEjXMv64aJngSwPEbyQYKXORl3qOBaR65SAXEexf/L14xw8VQIVZz5d9mvB7b/EQzPx0HYWGuUqJCIeCklVbSgvXGXYiup9x26ws1JY7a9UuczMX8mI3aaLN5386H/ZeZonFbs9DCfLRiwtAM6tZ7ozPIYuIN2oiPqzZCSBhT5VOO85mRryE/xF+csUQCfftq/CwOAV5BtOD+Mc8bjgoNkRT6UU5Ithh3WOxc1szBfJ9Mloq2maAucj5lA==

// package.json
{
    "name": "my-package",
    "type": "module",
    "exports": {
        ".": {
            // Entry-point for `import "my-package"` in ESM
            "import": "./esm/index.js",

            // Entry-point for `require("my-package") in CJS
            "require": "./commonjs/index.cjs",
        },
    },

    // CJS fall-back for older versions of Node.js
    "main": "./commonjs/index.cjs",
}

KcO2PaXgiaI2G9GvNgBOPjtngckLNuvuWezD5hm9DjHiU9Lh7pHXb1lRfsiGs90iCBxAd1BKCMQNPJrpJBPUA9ocxtSmbEOjXj6dvkCnHRlYvIHBamv0jTl3Ig52kgDBHNQhQ1osYGWe8fFrrjjeG2UvKnORjfkSyCuYCplG8sZAYK9H4c9i9Qt66NZ+yp0XvMia1G8SqYSvvHxySw+KTYAd+VsVPD+9Az1B4ENHTNLUZ8geJcvbWC2ueNfsfa0xNtCDxPcoCiLrzz77poubU/slIsqDxcH8KWFC1a4unSpXtnt1PgXEHC6s39FZJBhF8TiiVDcdAgK9cAdLvZBBUEP8he/d8s2Ya3jcpUgKWPhe+69hUwi/CQW78dmHQ9fR788seklvJZSRb9AWX3jpt9N5LPCUY1o0o7bzr9UiIHAWEustpRmOspaCXcV9QH83Wwi2STiY3uY5CUywO4k4bC6EAsuiYC3V1BhpJ1ty2WItO4k9X0FXSGA3uw/5juLtvm6RgN9eUt0XnKe3bM4rqzCkKWg1Vb7sFyHoV9wWB8A=

Use+0gWj7+bHz+VtZXdgFkNk3HLDC9IrTrlLeSdDgxqNO8kovOzDzoQZhq/AK1GGQqUsnKv2KgZ0azxyB6CL5dzP/eQtHjEwdBljU6zKJa5CFi/PwmQdA3waCtKLT89TYlq+t+RluloFxlsZUrmKBs/aIUtd1Ue1GRdQkDbv09zwS6iXXr2GPJDzbPagpmfQT+cjOkCaA17OtlESIkSHrvb4HdNqivC1BsgciY9bj0O5exyiI+VhQ9WU6mVQv+mGn/FP9FPPaX/VNv3YuI4k8d9iZLhalW7QMhp+YI+9Isz/IskZjqJlbcm3deYHrcdUhHd0y6381lU0kSYyiF6Bqiy/LJQ0fz34QPCLivtjtLQ+1QuoY/sES7SgJMES1A6mNvyWm2Ed2Z50HPFrdKJ+yS5vntvUW5cLHpy7TYxuaZhpSpmmF1RflY4Yd6dZ5ZsgXOXumsJqVO8U+Y8mxriMUv+Xn+WoZEN5OokYW6lawi6SL+irUhvPN/tN5RG41W/QSpLQNROfOiySVchR0gxoaen+WkPB/7d6x8/QIMV6WwycENFklttVb5JdKTASM3Qnu6LKk4Fv5gnk5jZmkVOn1UXMk5pDU/aJ49J+z1W7BlALJqTyvyJmZjZOwyqSAOymlEfHFplXlj5rp0zcCN1+5XTbN7z4EMpjOHliHLhPpHZDyhbvD+AiRur4VvkQ/1aAm7qJmwy2vQC6xeR9R9PRR134faQyeV0v5Fn2VJXp8El0J5Y6gWEhCYlVWHl1stsuaqVlllXM30q9CPLwFpn7W4bEM+uW6k0/QJlYPHhFR+4Fx4TdhQzMpAKBv4GXHOzSN8rrUgeE7JODuYwzvmOP6pCCORPVhyrUbsYd7MMTejU25U30WM3WjyPdlPCt1j7hmVq7XI1Oe0aksi3aP4KOVpnhjwNYr1e9k5PJhEGx2A1mKAla/wiBrAHfhbklGkGD6nBGvyKSc/alcwXjWNN0qrtnDtWLypIJVAp+YDzxtJfXf5w+Ejo9LMn9R6asxvl8yW+qUcB852y2c39TFC9YtE3/3GV9HVEvuWaBt+sM5mvO3uPO+3L8QkmFFbEMQHIMhKeZ21mmkfTXlctM72zUTOF6HkWWMBQ9Py5C5oZVh/mcFPWPv4XBSwZ1whW0OLt8uGVJxoXEqGS5R/XfOAwLjaaBCg8IYM7TV7hQoYiQkDdLfkxjd2MqoKZ4KxJmC5GP

iMcN5xBdRIDnc/elCEkZ70/azJ03D4lN+rUKkkW6tqVOkFI94aBnt8apALlf1mZXgjUjI2sgFaXgcz2t908Vulk0PjPp/MS3fH+zEbcmYOB+vXvUfpHXq9LDxEUe0VxGWzpygLJvGNumyNO6IahRbEtFU3rgi55Y69u7gOV7GFWoa8nHC7AQZLoOX1/I20vbLtlisb3p8ZLWN5FYLgXf/ULokt7XXG7QaT3trxN93rI1HC3+TPDLLrhjFrb0uv/XC9vzHKmI40CKE2RIkhAz1AyBMVxM36xGDqRHwPyxWv7PP7H/QEayVsNi7lv7fzvT7UKa/j3lSuo+xB/3N8SpxS2m7dN4YEx78+iYmKpviVcoKdS7ildARIikyDYGXotewBDcM7/1BF4tbdLzALCb9V81RrXQ8+Qi1+FrAJWhC2RcY5TA3B+scgCHHUlVb7ZPxu2LofUqRLlo6Uvccneq9nliDEYTkVQQifJpkYCgoWThfpGPzWEo9qqbzHn94FIN0K5dOK3I/fLxgs0sn0SJNOCk5O5q87jW0fwW7DorBfGkfEGg8ybe+eo8KzJPFNKWqIjfOXEomq+chQhrhZzhWWyR7ktOeXyasnpeQ9+KII0cUIpttGLHEaZoihQDOpOYZ76XTmhfEnWcSCZrce0vaA8NNvrr00e4R7iV3q999H64fqYP0QwhT7CUeRlwKxOxE6pwz7VL2Ia1i/xXF6YkbImLlI19ZFiBB+U3+jELSTJlH4eifrDEN6RgtKjpCuDEb3jGUBYEw9cCVlncMuDPjUaTaQCx0Gk0VMpWHWADlp9YADQ8GQIJjwHJFtguqFlDX+NOmahqGW5XQFWnmjcCnd0HjCPr/S4jIBeFSdczjCpltembnoYViRiEIMmgZ2PgIelWZci+spFO82dxPJGLiwq7hKO/GsQKnulidVmXaKtTZlBEVlrfh/FjxRDHdVaEN4HOm/OpbWUOv8ojb1i1L5Ufi0xaTxvWR0gBWoRXb6c+Kta4yHA6IzTDlnE0poKDtY4ZqUhJfZyt/+Z9QNCJhlE5UP/x/2xN8/uVKNwUKpLowoanQ30e/ieP/fTMxnWLjGWyWxaoikzHpJyy+aD0NrL4j8kKxQskpufNEdsmYCu+DwU4ZzukQMDvBmgCLWotfIVt+uxtgFNJ9FKCJv19rZ9X7mzihORPJGkH1S2/bceTcMrFc1BN0uVXmqCqrt80gtG/2glTCj9l3dipnYvaw5jmpM/rMWgPvuuYAo+xlhPlgGjvsu2VsvdIZeZH7eF2V2iQKXkd//Eh6isMYoNo4TUqy+ey/mJH4KotXIQGnC/pJIdQgM6LmLtpcYrA0G92fncDgg/u9oFzXwenBA3BNojfWSAnWnG+MIv/zih275MHNI40ozijGTFhIrF9Bijepra+tmbk7/UFRNpza+FH6Q==

// package.json
{
    "name": "my-package",
    "type": "module",
    "exports": {
        ".": {
            // Entry-point for TypeScript resolution - must occur first!
            "types": "./types/index.d.ts",

            // Entry-point for `import "my-package"` in ESM
            "import": "./esm/index.js",

            // Entry-point for `require("my-package") in CJS
            "require": "./commonjs/index.cjs",
        },
    },

    // CJS fall-back for older versions of Node.js
    "main": "./commonjs/index.cjs",

    // Fall-back for older versions of TypeScript
    "types": "./types/index.d.ts"
}

I1vEPg9Kmn6q8fooXr/I0alDw+3JRQDGjbqv6yXha5iHqt/f+BgnuDD3ZOvHRX5Kq8XjgMrA2gWroqSCNPFXW02SNBLiIS5oSTaYyyBOxBLExwW18tSUDq6BvxSjT823pp6RCpbwc/xt4RTzmw52f0fRf3UJii9WuZYsxzbvSQBX56Puy3Hhuis8fJDuewv9O6XsU4ORTt6HDckzwgaWJ/qyreRrIBgNNSUPwacHxdjBVmyNboXOtK6T3jk1dSC2jokPLl7k5i0ppq9CDElktNqNjlRjGri/w+SaM3CO0bnWIp/8kt5t5xkZokhUqvmticle6nkG8cwCyeVrnykqTcfoK7CBPNjunlVuXHquRKSEZ+58qfAq8dAjQ6XpA5XnLcBlP6giYidQLzeVV2i/cUBUQP/dtMWzOA8RmIR6VGTpgweF+lWOM7GjUAFlOMgdoQZ3gn+VJ6FO4Glsu/MUhsYwXUVdBHJD0YIDzkjQgMZJxRRO6WB0G3HSeBvCVp73x+2VTXgRtrYdhpSa2vSwRY/RqNo37naPCut0hYEsfrK4K/IVc+EEjy40un+3qED2i5Y42OMVToP7Ulee/npHHL0d+E7Vt/KEQOZccj4Rmu2I4iwphO1A2O1YIlHzbwPt6hwKLML8QtkTgn5M8TPXapMaRo2s9GcvK+2N7XCvj3NC2xmsd3KAiQqyzLdOHmk9d7yYbJyWIAcCbxJTE+om+n/wJWoUpKQAw9OTzcTDDluC/D3Yj9HktMH0W9t/29/KYdqA3m/wgkSL7ubpvleDXhFxdi6rzpOF0o8PZdXTA1w5sdyg7eCd/SfHT6n2sBToO2c8BEHaMJ44GW/h5Qu/AVX/XqUqRbyxMJxRgOva3udHPp2lpbNlId52fDmGzIUVi/+jtp0jfO3zag6+3/INu+HQsT3fnz4bm2MJF7qaqIxsqnsLtx1UXKbFpvCncg5bKAWrYWPt6WMZiL5n8ltlkQ==