- Fix standalone mode. (#1367)
- Treat empty
.mjs/.mtsentry as ESM instead of fake CommonJS. (#1366) - Remove unused
legacyGetBuildTargetByUAfunction. (#1361)
- Fix
*.sveltetransformer. (#1357)
- Security hardening for path traversal:
- Prevent path traversal in module resolution. (#1353)
- Reject path-traversal keys in filesystem storage. (#1351)
We are shutting down the legacy build server; existing builds will continue to work. Legacy pinned URLs will now be redirected to the new routes:
https://esm.sh/v135/react-dom@19.2.5 -> https://esm.sh/react-dom@19.2.5
https://esm.sh/react-dom@19.2.5?pin=v135 -> https://esm.sh/react-dom@19.2.5
- Support
keepNamesandignoreAnnotationsoptions in theesm.shfield ofpackage.json. (#1341) - Other Changes:
- Add disk status checking and npm cache purging functionality. (#1329)
- Add build timeout handling and improve command execution stability. (#1334, #1339)
- Upgrade
esbuildto 0.28.0. (#1342) - Fix bare import self-reference resolution in scoped fork packages. (#1330)
- Fix the transform API. (#1333)
- Fix a path handling bug caused by assuming a removable 2-character prefix. (#1345)
- Introduce date(
yyyy-mm-dd) versioningimport * as myPackage from "https://esm.sh/my-package@2026-01-02";
- Introduce
?metaAPI that allows you to get the module build metadata.$ curl https://esm.sh/react?meta { "name": "react", "version": "19.2.4", "module": "/react@19.2.4/es2022/react.mjs", "integrity": "sha384-xPv1wRGmRBj4tIrN16FDkSIeMntFCfG+8ptsnx5wqrM+0zp/oKtoyJ0QqCJAAeVm", "dts": "/@types/react@~19.2.9/index.d.ts", "exports": ["./jsx-runtime", "./jsx-dev-runtime", "./compiler-runtime"], } - Other Changes:
- Upgrade
esbuildto 0.27.3 - Upgrade
unenvto 2.0.0-rc.22 - Support import with
{ type: "json" }(#1202) - Support import with
{ type: "css" }(#1193) - Support
.d.ctstypes (#987) - Support namespace-based external marking (#1188)
- Optimize storage (#1260)
- Remove
esm.sh/xscript - Remove unsafe
x-zone-idandx-npmrcheaders (#1235) - Ban urls with
/../segments in path (#1271) - Reserve semantic version of dependencies (#1313)
- Cache npm registry "not found" responses (#1297)
- Add
npmBackupRegistryconfig for rate limitation (#1296) - Fix sub-modules end with
.map(#1311) - Fix tree-shaking with exports query (#1310)
- Fix memory leak (#1157)
- Fix S3 Storage signature with
/#/path (#1022) - Fix forward build deps for Typescript types (#1244)
- Fix
pkg.pr.newredirects (#1204) - Fix SSRF (#1149)
- Fix
*.css?moduleXSS (#1237) - Fix dts_lexer: bufio.Scanner: token too long (#1139)
- Fix cjs-module-lexer timeout (#1265)
- Upgrade
-
Add two builtin registries:
- jsr - The open-source package registry for modern JavaScript and TypeScript, created by the Deno team. (32cd2bd)
// example import { encodeBase64 } from "https://esm.sh/jsr/@std/encoding@1.0.0/base64"; import { Hono } from "https://esm.sh/jsr/@hono/hono@4";
- pkg.pr.new - Continuous (Preview) Releases for your libraries, created by StackBlitz Labs (#904, #913)
// Examples import { Bench } from "https://esm.sh/pr/tinylibs/tinybench/tinybench@a832a55"; import { Bench } from "https://esm.sh/pr/tinybench@a832a55"; // --compact
- jsr - The open-source package registry for modern JavaScript and TypeScript, created by the Deno team. (32cd2bd)
-
Respect semantic versioning for dependency resolving (#875)
Previously, dependency resolution used fixed versions, which could cause duplication issues when packages were updated. Starting from v136, we now follow semantic versioning for dependencies.
// before "react-dom@19.0.0" import "/react@19.0.0/es2022/react.mjs"; // after "react-dom@19.0.0" import "/react@^19.0.0?target=es2022";
-
Add built-in npm package manager (#948)
Implement a built-in npm package manager in Go to replace pnpm. This change reduces the CI test time from 12:15 to 4:30 (~2.7x faster) and eliminates the need for
nodejsandpnpmdependencies. -
Split modules by analyzing the dependency tree during the build process (#959)
To improve build performance and reduce network requests, esm.sh bundles sub-modules of a package by default. However, this can lead to duplicate code in the build. In v136, the server will split the modules by analyzing the dependency tree during the build process if the package's
exportsfield is defined. -
Use @pi0's unenv as the node runtime compatibility layer (#914)
unenv provides a collection of Node.js and Web polyfills and mocking utilities with configurable presets for converting JavaScript code and libraries to be platform and runtime agnostic, working in any environment including Browsers, Workers, Node.js, Cloudflare Workers, Deno. unenv is also used by CloudFlare Workers: blog.
You can also access these
unenvnode runtime modules directly via/node/[node-builtin-module-name].mjspath, for example:import * from "https://esm.sh/node/fs.mjs";
-
Add npm-replacements that follows e18e's module-replacements. (#914)
The
npm-replacementspackage replaces certain polyfill packages on NPM with native modern APIs during the build process. For example, theobject-assignpackage is replaced withObject.assign:import assign from "object-assign"; // replaced with "const assign = Object.assign"
-
Remove build version prefix from the module path
The build version prefix of esm.sh was introduced to avoid potential breaking changes caused by updates to the esm.sh server. However, it can lead to duplication issues when updating the server. In v136, we have removed the build version prefix from the module path, and the
?pinquery will be ignored. Paths with the build version prefix will continue to work as before, but the new default will be paths without the build version prefix.// before "react@19.0.0" -> "https://esm.sh/v135/react@19.0.0/es2022/react.mjs"; // after "react@19.0.0" -> "https://esm.sh/react@19.0.0/es2022/react.mjs";
-
Deprecate the
buildAPIimport { build } from "https://esm.sh/build"; build() // throws Error: The build API has been deprecated.
-
Deprecate the Deno CLI script
Deno now includes its own built-in package manager, which can be used to manage
jsr:nadnpm:imports in your deno applications. So we decided to deprecate the Deno CLI script.# use deno add npm:pract jsr:@std/encoding Add npm:preact@10.25.4 Add jsr:@std/encoding@1.0.6 # do not use deno run -A -r https://esm.sh init error: The deno CLI has been deprecated.
-
Add
npmScopedRegistriesconfigThe
npmScopedRegistriesconfiguration enables you to define the registry, token, user, and password for scoped npm packages. This allows you to import scoped packages using URLs likehttps://your-esm-server.com/@scope_name/pkg@version.{ "npmScopedRegistries": { "@scope_name": { "registry": "https://your-registry.com/", "token": "xxxxxx", "user": "", "password": "" } } } -
Experimental Features:
- Build
.vueand.sveltefiles on the fly (#906)import "https://esm.sh/gh/phosphor-icons/vue@v2.2.0/src/icons/PhAirplay.vue?deps=vue@3.5.8"
- https://esm.sh/x - ts/jsx/vue/svelte just works™️ in browser. (#886)
- Build
-
Other Changes:
- Upgrade esbuild to 0.24.2
- Use native cjs-module-lexer@v1.0.7
- Use target
es2022for browsers by default (#903) - Replace
windowwithglobalThisto make Deno 2 happy (#964) - Use
.mjsextenstion for sub-module build (#917) - dts-transformer: support
.dandd.ctsextension (#987) - Support
major.minor.patch+buildversioning (#985) - Support import attributes (#976)
- config: Support S3-compatible storage (#886)
- config: Add
corsAllowOriginsconfig - config: Add
customLandingPageconfig (#928) - config: Add
npmQueryCacheTTLconfig (#921)
- Introduce https://esm.sh/run
- worker: Use
raw.esm.shhostname for ?raw option - Add
?no-bundleoption - Support
esm.shfield in package.json - Fix sub-module resolving (close #754, #743)
- Upgrade esbuild to 0.19.7
- Add
transformOnlyoption for build api - Add
allowListin config (#745 by @olekenneth) - Improved Deno CLI (#742 by @Kyiro)
- Worker: fix dist version lookup
- Fix exported names from a dependency (close #729, #750)
- Fix: write
.npmrcfile ifNpmRegistryis set (close #737) (#751 by @edeustace) - Upgrade esbuild to 0.19.5
- Add
?rawto support requests for raw package source files (#731 by @johnyanarella) - Add global
setMaxListenerstonode:eventspolyfill (#719) - cjs-lexer: resolving error now doesn't break build (close #738)
- Fix
cwdmethod ofnode:processpolyfill (close #718) - Fix
applyConditionsfunction usenodecondition for browser (close #732) - Fix
*.css.jspath (close #728) - Fix some invalid require imports (close #724)
- Fix relative path resolving of
browserin package.json - Upgrade esbuild to 0.19.4
- Resolve node internal modules when
?external=*set (close #714) - Fix builds with
bigintandtop-level-awaitfor all targets (close #711) - Fix
node:processployfill module mssing thehrtimemethod - Fix docker image missing
gitcommand - esm-worker: add
varyUAoption for polyfill modules
- Add cache layer for the
/buildAPI - Fix dts transformer resolver ignoring
*.mjsurl - fix
?externaloption ignoring sub-modules - Use raw order of the
exportsin package.json (close #705) - Redirect old build path (
.js) to new build path (.mjs) (close #703) - Upgrade esbuild to 0.19.2
- esm-cjs-lexer: support minified UMD exports (#689)
- Support sub
.mjsmodule (close #691) - Fix
?bundlemode ignoresnode_process.js(close #694) - Upgrade
@types/react@18to 18.2.15 - Upgrade esbuild to 0.18.17
- BREAKING: Remove
x-esm-depsheader (close #683) - Sort
exportsof package.json when looping (close #683) - Don't replace
typeof windowfor deno target (close #681) - Don't replace node global variable for
?target=node - Fix dts transformer (close #670)
- Fix depreacted message with
" - esm-worker: Fix cacheKey with
x-real-originheader
- Add official Docker image: https://ghcr.io/esm-dev/esm.sh
- Fix missed
?externalof deps - Fix duplicate
Access-Control-Expose-Headersheaders - Fix dts transform for imports with both default and named imports (#675 by @hayes)
- Don't bundle dynamic imports
- Upgrade stableBuild to v128
- Add
preloadimports - Add
modern-normalizeto thecssPackages - Fix subpath not be resovled with
?alias(close #671) - Fix dts transformer for "*.d" path imports (close #660)
- Fix source map mappings (close #668)
- CLI: Fix update failure caused by gh module (#661 by @lifegpc)
- Upgrade esbuild to 0.18.10
- breaking: the
esmtag function of build API now imorts moduleimport { esm } from "https://esm.sh/build"; const mod = await esm` export const foo:string = "bar" `; console.log(mod.foo); // "bar"
- cjs-lexer: support annotated exports (close #659)
- Add support for basic auth (#657 by @johnpangalos)
- Fix
node-fetchimport in cjs modules (close #649) - Add
node:worker_threadspolyfill(fake) (close #648) - Use
denonexttarget for Deno >= 1.33.2 (close #646) - Fix
.json.jspath (close #645) - Fix cache missing content (close #641)
- Upgrade
deno/stdto 0.177.1
- Fix the dts walker (close #642)
- Add
/serverendpoint for Deno to serve esm.sh locally - Add scope to config (#636 by @johnpangalos)
- Fix
.d.tswalker (close #640) - Fix packages with
vprefix inversion(close #639) - Fix
findFilesfunction (close #638)
- Use stable imports order
- Support more asset extnames
- esm-worker: Use
X-Real-OriginandX-Esm-Worker-Versionheaders - Fix worker
CORSissue (close #631) - Fix sub-module resolving (close #633)
- Fix undefined content-type header (close #635)
- Use
browserfield for package main if possible{ "name": "pkg", "version": "1.0.0", "main": "./index.js", "browser": { "./index.js": "./browser.js" } } - Fix redirects for
?cssandGET /build - Fix
*.js.jsmodule path (close #627) - Fix cjs imports (close #629, #626)
- Add
pakoto therequireModeAllowList
- build-api: Support types option
- Open-source the cloudflare worker
- Support
HEADmethod - Fix bare path for css/custom build
- Fixing type only packages missing the
X-Typescript-Typesheader - Fix cjs-lexer
exportsresloving - Use empty object instead of
nullfor browser exclude (close #613) - Add
zlib-syncto nativeNodePackages (close #621) - Redirect invalid
*.jsonurl
- Fix named import of cjs (close #620)
- Use
STABKE_VERSIONfor dts build ofstableBuild - Upgrade esbuild to 0.17.18
- feat: Publish system (#607)
- esm-cjs-lexer: Support
__export(require("..."))pattern (close #611) - Add
Authmiddleware - Upgrade
stableBuildto v118 - Remove lit from
stableBuild - Fix submodule types (close #606)
- Fix arch for darwin arm64 (#617 by @JLugagne)
- Fix Buffer polyfill for deno (close #574)
- Fix dts transformer with submodule (close #599)
- Fix importing
.jsonas a module (close #601) - Fix
.wasmmodule importing (close #602) - Fix path
/v100/PKG/TARGET/index.js
- Support modules/assets from Github repo (close #588)
- Update
nativeNodePackages(close #591) - Fix dep import url of cjs module (close #592)
- Add support of resolving
typesVersions(close #593) - Fix
exportsglob condition resloving (close #594) - Remove shebang (close #596)
- Fix missed build version of dts files (close #589)
- Return JavaScript modules for
?modulequery withwasmfiles - Fix types transformer (close #581)
- Fix incorrect named import of cjs modules (close #583)
- Fix sumodule path resolving (close #584)
- Upgrade
@types/nodeto 18
- Add
?conditionsquery as esbuild option - Use pnpm to install packages instead of yarn (save the server disk space & improve the build performance)
- Serve static files on local (#564 @Justinidlerz)
- Support
.d.mtsextension (close #580) - Fix cjs transpiling (close #577)
- Fix types bulid (close #572, #576)
- Fix invalid type URL if submodule is main entry (#579 @marvinhagemeister)
- Upgrade esbuild to 0.17.14
expressis working in Deno- Fix lost non-mjs-extension module caused by v112 (close #559)
- Fix exports of
netmaskandxml2js(#561 @jcc10) - Fix
defaultimport of deps for cjs (close #565, #566)
- Use
.mjsextension for the package main module to resolve subpath conflicts - Ignore
?exportsquery when importing stable modules - Fix npm naming regexp (close #541)
- Fix node buffer import for denonext target (closed #556)
- Fix tree shaking (close #521)
- Fix package nested conditions export (#546 by @Justinidlerz)
- Fix esm imports in cjs (close #557)
- Improve server performance (#543 by @Justinidlerz)
- Update requireModeAllowList (close #540, #548)
For Deno:
- Inject
XHRpolyfill foraxios,cross-fetch,whatwg-fetchautomatically - CLI: Use user-specified indent size (#551 by @npg418)
- Print package
deprecatedmessage - Remove source map url of worker
- Fix package CSS redirects with
targetoption - Fix build dead-loop for edge cases
- Fix CLI
updatecommand (close #536)
- Fix
Content-Typeheader for dts files
- Ignore
?externaloption for stable builds - Fix
react/jsx-runtimebundlesreactmodule - Remove alias export resolving (close #530)
- Add
denonexttarget to use deno 1.31 node compatibility layer - Redirect to css file for css packages
https://esm.sh/normalize.css -> https://esm.sh/normalize.css/normalize.css - Fix wasm packages can't get the wasm file.
import init, { transform } from "https://esm.sh/lightningcss-wasm"; // before: you need to specify the wasm file path await init("https://esm.sh/lightningcss-wasm/lightningcss_node.wasm") // after: you don't need to specify it await init()
- Disable
bundlemode for stable builds - Fix alias export (close #527)
- Update references to reqOrigin to use cdnOrigin (#529 by @jaredcwhite)
- Add
?cjs-exportquery (close #512)
If you get an error like...not provide an export named..., that means esm.sh can not resolve CJS exports of the module correctly. You can add?cjs-exports=foo,barquery to specify the export names:import { NinetyRing, NinetyRingWithBg } from "https://esm.sh/react-svg-spinners@0.3.1?cjs-exports=NinetyRing,NinetyRingWithBg"
- Update
requireModeAllowList(close #520) - Remove
?sourcemapquery, always generate source map as inline url. - Default export all members from original module to prevent missing named exports members (#522)
- Only apply patch if types are missing in preact (#523)
- Upgrade
esbuildto 0.17.10. - Upgrade
deno/stdto 0.177.0
- Just fix fake module export names resolving (close #510)
- Check types which is not defined in
package.json - Fix empty module build (close #483)
- Fix exports field resolving (close #503)
- Fix deno cli script (close #505)
- Fix incorrect redirects (close #508)
- Fix invalid target with
HeadlessChrome/UA (close #509) - Upgrade
deno/stdto 0.175.0
- Rewrite
FileSysteminterface of the storage. - Fix submodule build with
exportsin package.json (close #497) - Fix es5-ext weird
/#/path (close #502)
- Add
injectargument for worker factoryimport workerFactory from "https://esm.sh/xxhash-wasm@1.0.2?worker"; const workerInject = ` self.onmessage = (e) => { // variable 'E' is the xxhash-wasm module default export E().then(hasher => { self.postMessage(hasher.h64ToString(e.data)); }) } `; const worker = workerFactory(workerInject); worker.onmessage = (e) => { console.log(e.data); // 502b0c5fc4a5704c }; worker.postMessage("Hello");
- Respect
?externalarg in bundle mode (close #498) - Add
require()syntax support for dts transformer - Fix import maps scope is not correct by the CLI script (close #480)
- Fix
basePathdoesn't take effect on redirects (close #481) - Fix
X-TypeScript-Typesheader not pined for stable builds - Fix some bugs related to package path parsing (#487)
- Upgrade
esbuildto 0.16.17 - Upgrade
deno/stdto 0.173.0
- Support
browserfield of package.json to improve compatibility with npm packages in browser. For example, thewebtorrentpackage will usememory-chunk-storeinstead offs-chunk-storeand exclude built-in modules likefs,net,osand so on.(Close #450){ "name": "webtorrent", "description": "Streaming torrent client", "version": "1.9.6", "browser": { "./lib/server.js": false, "./lib/conn-pool.js": false, "./lib/utp.js": false, "bittorrent-dht/client": false, "fs": false, "fs-chunk-store": "memory-chunk-store", "load-ip-set": false, "net": false, "os": false, "ut_pex": false }, }
- Fix
?bundlemode with illegal paths (close #476). - Fix
?workermode doesn't support CORS.
- Improve self-hosting configuration. check HOSTING.md for more details.
- Support
browserfield when it's an es6 module (close #381). - Purge headers from unpkg.com to avoid repeated
Access-Control-Allow-Originheader (close #453). - Fix content compression (close #460).
- Fix alias export (close #471).
- Fix cycle importing (close #464).
- Fix scenarios where module/es2015 are shims (maps).
- Fix worker cors issue.
- Upgrade
esbuildto 0.16.10. - Upgrade
deno/stdto 0.170.0.
- Improve CDN cache performance, now you can get faster response time of
.d.ts,.wasmand other static files. - Remove
?depspurge (close #420) - Remove
?exportquery of sub build task - Upgrade
deno/stdto 0.165.0.
- Add tree-shaking support for es modules
import { __await, __rest } from "https://esm.sh/tslib" // 7.3KB import { __await, __rest } from "https://esm.sh/tslib?exports=__await,__rest" // 489B
- Add
node-fetchpolyfill for browsers and deno - Restart
nsprocess when got "unreachable" error (close #448) - Fix
exportsresolver (close #422) - cjs-lexer: Update
swcto latest
- Add
https://esm.sh/build-targetendpoint to return the buildtargetof current browser/runtime by checkingUser-Agentheader. - Support
--npm-tokenoption to support private packages (#435). - Update
polyfills/node_process: replace timeout withqueueMicrotask(#444). - Upgrade
deno/stdto 0.162.0.
- Update the fake node
fsployfill for browsers(addcreateReadStreamandcreateWriteStreammethods) - Check package name (close #424)
- Fix some invalid types bulids
- Upgrade esbuild to 0.15.9
- Fix
web-streams-ponyfillbuild (close #417) - Fix invalid
?depsand?aliasresolving - Fix
solid-js/webbuild for Deno - Add
add react:preact/compatpattern for the deno CLI
- Downgrade
deno/stdto 0.153.0.
- Fix
@types/reactversion (close #331) - Fix cjs
__esModuleresolving (close #410) - Fix
postcss-selector-parsercjs exports (close #411) - Fix
solid-js/webofdenotarget - Upgrade
deno/stdto 0.154.0
- Add
stablechannel for UI libraries like react, to avoid multiple copies of runtime by cachehttps://esm.sh/v92/react@18.2.0/deno/react.js -> https://esm.sh/stable/react@18.2.0/deno/react.js - Respect
external allarg in types build - Upgrade
deno/stdto 0.152.0
- Improved Deno CLI Script:
After initializing, you can use the
deno run -A https://esm.sh/v91 init
deno task npm:[add/update/remove]commands to manage the npm packages in the import maps.deno task npm:add react react-dom # add packages deno task npm:add react@17 react-dom@17 # add packages with specified version deno task npm:update react react-dom # upgrade packages deno task npm:update # update all packages deno task npm:remove react react-dom # remove packages
- Respect
importsof package.json (close #400) - Update
npmNamingrange (close #401)
- Experimentally add Deno CLI mode, it will update the
import_map.jsonfile in the working directory:deno install -A -n esm -f https://esm.sh esm add react react-dom # add packages esm add react@17 react-dom@17 # add packages with specified version esm upgrade react react-dom # upgrade packages esm upgrade # upgrade all packages esm remove react react-dom # remove packages
Ensure to point the
import_map.jsonin yourdeno runcommand or thedeno.jsonfile. - Support
/v89/*some-package@versionexternal all pattern, do NOT use directly, use the CLI mode instead. - Redirect urls with
/@types/to the.d.tsfile instead of build - Improve node service stability
- Fix cjs
__exportStarnot used (close #389) - Fix
resolvepackage (close #392) - Add workaround for
prismabuild - Upgrade deno std to 0.151.0
- support
?deno-std=$VERto specify the deno std version for deno node polyfills - fix missed
__esModuleexport
- Respect
exports.developmentconditions inpackage.json(close #375) - Fix
solid-js/web?target=denostrip ssr functions - Fix
@types/nodetypes transforming (close #363) - Fix
?externaldoesn't support.dtsfiles (close #374) - Fix invalid export names of
keycode,vscode-oniguruma&lru_map(close #362, #369) - Fix esm resolving before build (close #377)
- Support
?externalquery, this will give you better user experience when you are using import maps. - Support
?no-dts(equals to?no-check) query - Add the 'ignore-annotations' option for esbuild (#349)
- Prevent submodules bundling their local dependencies (#354)
- Don't panic in Opera
- Support
?keep-namesquery for esbuild (close #345)
- Fix
fixAliasDepsfunction that imports multiple React when using?deps=react@18,react-dom@18
- Fix types version resolving with
?depsquery(close #338) - Fix URL redirect with outdated build version prefix
- Replace
node-fetchdep tonode-fetch-native(close #336) - Add
--keep-namesoption for esbuild by default (close #335) - Fix incorrect types with
?aliasquery
- fix types with
?depsquery (close #333)
- fix
?depsand?aliasdepth query
- Fix build error in v79
- Use
esm.shinstead ofcdn.esm.sh - User semver versioning for the
x-typescript-typesheader - Fix aliasing dependencies doesn't affect typescript declaration (close #102)
- Fix using arguments in arrow function #322
- Fix Deno check precluding esm.sh to start #327
- Reduce database store structure
- Fix missed
renderToReadableStreamexport ofreact/serverin deno - Fix
fetchPackageInfodead loop (close #301) - Upgrade esbuild to 0.14.36
- Use the latest version of
deno/std/nodefromcdn.deno.landautomatically - Add
es2022target - Upgrade esbuild to 0.14.34
- Fix
?depsmode
- Fix types build version ignore
?pin(close #292) - Infect
?depsand?aliasto dependencies (close #235) - Bundle
?workerby default - Upgrade semver to v3 (close #297)
- Upgrade esbuild to 0.14.31
- Upgrade deno std to 0.133.0 (close #298)
- Support
?no-requireflag, with this option you can ignore therequire(...)call in ESM packages. To support logic like below:// index.mjs let depMod; try { depMod = await import("/path") } finally { // `?no-require` will skip next line when resolving depMod = require("/path") }
- Fix types dependency path (close #287)
- Support
jsx-runtimewith query:https://esm.sh/react?pin=v72/jsx-runtime->https://esm.sh/react/jsx-runtime?pin=v72 - Support pure types package (close #284)
- Fix version resolving of dts transformer (close #274)
- Return
barecode whentargetandpinprovided to reduce requests// https://esm.sh/react@17.0.2 export * from "https://cdn.esm.sh/v69/react@17.0.2/es2021/react.js";
// https://esm.sh/react@17.0.2?target=es2020&pin=v70 {content just from https://cdn.esm.sh/v69/react@17.0.2/es2021/react.js}
- Rollback
parseCJSModuleExportsfunction to v68 (close #277, #279) - Fix
exportsresolving in package.json (close #278, #280) - Upgrade deno
std/nodeto 0.130.0
- Force the dependency version of react equals to react-dom's version
before: react-dom@18-rc.2 -> react@18-rc.2-next.xxxx now: react-dom@18-rc.2 -> react@18-rc.2 - Fix version check for prerelease (can't resolve
reactinreact-dom@rc) - Improve cjs module transform (can handle more edge cases, for example react-18-rc defines non-esm for browsers and deno)
- Fix
bundlemode (close #271) - Support
jsnext:mainin package.json (close #272) - Improve
cjs-esm-exportsto supportUMDformat// exports: ['foo'] const { exports } = parse('index.cjs', ` (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (factory((global.MMDParser = global.MMDParser || {}))); }(this, function (exports) { exports.foo = "bar"; })) `); - Upgrade deno node polyfill to 0.128.0
- Force
react/jsx-dev-runtimeandreact-refreshinto dev mode - Replace
typeof window !== undefinedtotypeof document !== undefinedfordenotarget - Replace
object-assignwithObject.assign - Upgrade
esbuildto 0.14.25
- Improve
exportsresloving ofpackage.json(close #179)
- Feature: Support
?pathquery to specify thesubmodule, this is friendly for import maps with options (close #260)// import-map.json { imports: { "react-dom/": "https://esm.sh/react-dom?target=es2015&path=/" } }
// equals to https://esm.sh/react-dom/server?target=es2015 import { renderToString } from "react-dom/server"
- Upgrade
deno.land/std/nodepolyfill to 0.125.0 - Upgrade
esbuildto v0.14.18 - bugfixs for #251, #256, #261,#262
- Fix Node.js
processcompatibility (close #253) - Upgrade
deno.land/std/nodepolyfill to 0.122.0
- Add fs polyfill(fake) for browsers (close #250)
- Upgrade
deno.land/std/nodepolyfill to 0.121.0
- Support React new JSX transforms in Deno(1.16+) (close #225)
- improve
cjs-esm-exportsto support some edge cases:var foo = exports.foo || (exports.foo = {}); ((bar) => { ... })(exports.bar || (exports.bar = {}));
- Fix
@typesverisoning:marked->@types/marked@4.0.1marked@2->@types/marked@2.0.5marked?dep=@types/marked@4.0.0->@types/marked@4.0.0
- Upgrade
deno.land/std/nodepolyfill to 0.119.0 - Upgrade
esbuildto v0.14.8
- Recover the stable queue
- Filter invalid pathnames like
/wp-admin/login.php - Fix
?pinmode when build failed (close #206)
- Add
?pinmode - Improve build stability
- Fix
marked@4import - Fix invalid types hangs forever (close #201)
cjs-esm-exportssupports tslib__exportStar(close #197)- Improve node
perf_hookspolyfill - Fix redeclared process polyfill (close #195)
- Fix
?workermode on deno (#198) - Add
hetocjs-esm-exportsrequire mode allow list (close #200) - Fix package css redirect link
- Upgrade esbuild to v0.13.12
- Add playground to write esm app online, try it on https://esm.sh?playground
- Add a better cjs exports parser: cjs-esm-exports
- Support web worker
import editorWorker from '/monaco-editor/esm/vs/editor/editor.worker?worker' const worker = new editorWorker()
- Add
queueinterface - Support dataurl, .wasm import
- Import deno polyfills from https://deno.land/std@0.113.0/node
- Fix package CSS
- Update deno polyfills from 0.106.0 to 0.110.0 (#190)
- Add deno
modulepolyfill (#164) - Fix (storage/fs_local) file path portability bug (#158)
- Fix types build (#149)
- Use
streamandeventsfrom deno std/node (#136) @talentlessguy - Fix
localLRUand allow formemoryLRU(#148) @jimisaacs
- Fix build breaking change in v50 (#131).
- Add
localLRUFS layer (#126) - Add a
Cache Interfacethat is using to store temporary data like npm packages info. - Do not try to build
/favicon.ico(#132) - Add lovely
pixi.js,three.jsand@material-ui/coretesting by @jimisaacs (#134, #139).
- Improve build performance to burn the server CPU cores! Before this, to build a module to ESM which has heavy deps maybe very slow since the single build task only uses one CPU core.
- Rewrite the dts transformer to get better deno types compatibility and faster transpile speed.
- Add Deno testing CI on Github.
- Improve the build process to fix an edge case reported in #118
esm (v48) output:
const Parser = require('htmlparser').Parser;
the expected output was fixed in v49:import htmlparser2 from '/v48/htmlparser2@5.0.0/es2021/htmlparser2.js' const Parser = htmlparser2.Parser; // parser is undefined
import { Parser as htmlparser2Parser } from '/v48/htmlparser2@5.0.0/es2021/htmlparser2.js' const Parser = htmlparser2Parser; // parser is a class
- Add more polyfills for Deno, huge thanks to @talentlessguy (#117)
- path
- querystring
- url
- timers
- Better self-hosting options improved by @jimisaacs, super! (#116, #119, #120, #122)
- Add Unlimted(max 1PB) Storage to store builds and cache via NFS on esm.sh back server behind Cloudflare
- Improve cjs-lexer service to handle the edge case is shown below:
esm output:
function debounce() {}; debounce.debounce = debounce; module.exports = debounce;
export { debounce } // this was missed export default debounce
- Ignore
?targetin Deno (fix #109) - Add Storage Interface to store data to anywhere (currently only support postdb + local FS)
- Split modules based on exports defines (ref #78)
- Add
cache-folderconfig foryarn add - Improve
resolveVersionto support format 4.x (fix #93) - Import initESM to support bare exports in package.json (fix #97)
- Bundle mode should respect the extra external (fix #98)
- Support node:path importing (fix #100)
- Pass
?aliasand?depsto deps (fix #101) - Improve
cjs-lexersever (fix #103) - Upgrade rex to 1.4.1
- Upgrade esbuild to 0.12.24
- Improve build performance
- Filter
cjs-moudle-lexerserver invalid exports output - Improve
resolveVersionfunction to support format like 4.x (fix #93) - Improve dts transform (fix #95)
- Add
Aliasfeature (#89)in combination withimport useSWR from 'https://esm.sh/swr?alias=react:preact/compat'
?deps:The origin idea was came from @lucacasonato.import useSWR from 'https://esm.sh/swr?alias=react:preact/compat&deps=preact@10.5.14'
- Add
nodebuild target (#84) - Check
exportsfield to get entry point inpackage.json - Run cjs-lexer as a server
- Upgrade esbuild to 0.11.18 with
es2021build target - Bugfixs for #90, #85, #83, #77, #65, #48, #41.
- Add
__esModulereserved word - Align require change for esbuild 0.12
- Fix setImmediate polyfill args (#75)
- Upgrade esbuild to 0.11.12
- Add
timeout(30 seconds) for new build request, or use previous build version instead if it exists - Fix
bundlemode - Fix build dead loop
- Upgrade esbuild to 0.11.12
- Update polyfills for node builtin modules
- Upgrade esbuild to 0.11.9
- Imporve
parseCJSModuleExportsto support json module - Pass
NODE_ENVtoparseCJSModuleExports - Update node buffer polyfill
- Upgrade postdb to v0.6.2
- Fix build for packages with
moduletype (#48) - Improve
parseCJSModuleExportsfunction (use cjs-module-lexer and nodejs eval both to parse cjs exports, and ignore JSON module) - Pass
NODE_ENVtoparseCJSModuleExportsfunction - Upgrade esbuild to 0.11.6
- Add bundle mode
- Fix module exports parsing
- Fix esm build for some edge cases
- Add simple test (thanks @zhoukekestar)
- Upgrade esbuild to 0.11.5
- Set build
targetby theuser-agentof browser automaticlly
- Remove bundle mode · Breaking
- Add build queue instead of mutex lock
- Use AST(cjs-module-lexer) to parse cjs exports
- Add a testing page at https://esm.sh?test
- Fix
__setImmediate$is not defined - Support exports define in package.json
- Support mjs extension
- Improve NpmPackage resolve (close #41)
- Upgrade esbuild to 0.11.4
- Upgrade rex to 1.3.0