- Fix Buffer polyfill for deno (close #574)
- Fix dts transformer with submodule (close #599)
- Fix importing
.json
as a module (close #601) - Fix
.wasm
module 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
exports
glob condition resloving (close #594) - Remove shebang (close #596)
- Fix missed build version of dts files (close #589)
- Return JavaScript modules for
?module
query withwasm
files - Fix types transformer (close #581)
- Fix incorrect named import of cjs modules (close #583)
- Fix sumodule path resolving (close #584)
- Upgrade
@types/node
to 18
- Add
?conditions
query 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.mts
extension (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
express
is working in Deno- Fix lost non-mjs-extension module caused by v112 (close #559)
- Fix exports of
netmask
andxml2js
(#561 @jcc10) - Fix
default
import of deps for cjs (close #565, #566)
- Use
.mjs
extension for the package main module to resolve subpath conflicts - Ignore
?exports
query 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
XHR
polyfill foraxios
,cross-fetch
,whatwg-fetch
automatically - CLI: Use user-specified indent size (#551 by @npg418)
- Print package
deprecated
message - Remove source map url of worker
- Fix package CSS redirects with
target
option - Fix build dead-loop for edge cases
- Fix CLI
update
command (close #536)
- Fix
Content-Type
header for dts files
- Ignore
?external
option for stable builds - Fix
react/jsx-runtime
bundlesreact
module - Remove alias export resolving (close #530)
- Add
denonext
target 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
bundle
mode for stable builds - Fix alias export (close #527)
- Update references to reqOrigin to use cdnOrigin (#529 by @jaredcwhite)
- Add
?cjs-export
query (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,bar
query to specify the export names:import { NinetyRing, NinetyRingWithBg } from "https://esm.sh/[email protected]?cjs-exports=NinetyRing,NinetyRingWithBg"
- Update
requireModeAllowList
(close #520) - Remove
?sourcemap
query, 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
esbuild
to 0.17.10. - Upgrade
deno/std
to 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/std
to 0.175.0
- Rewrite
FileSystem
interface of the storage. - Fix submodule build with
exports
in package.json (close #497) - Fix es5-ext weird
/#/
path (close #502)
- Add
inject
argument for worker factoryimport workerFactory from "https://esm.sh/[email protected]?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
?external
arg 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
basePath
doesn't take effect on redirects (close #481) - Fix
X-TypeScript-Types
header not pined for stable builds - Fix some bugs related to package path parsing (#487)
- Upgrade
esbuild
to 0.16.17 - Upgrade
deno/std
to 0.173.0
- Support
browser
field of package.json to improve compatibility with npm packages in browser. For example, thewebtorrent
package will usememory-chunk-store
instead offs-chunk-store
and exclude built-in modules likefs
,net
,os
and 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
?bundle
mode with illegal paths (close #476). - Fix
?worker
mode doesn't support CORS.
- Improve self-hosting configuration. check HOSTING.md for more details.
- Support
browser
field when it's an es6 module (close #381). - Purge headers from unpkg.com to avoid repeated
Access-Control-Allow-Origin
header (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
esbuild
to 0.16.10. - Upgrade
deno/std
to 0.170.0.
- Improve CDN cache performance, now you can get faster response time of
.d.ts
,.wasm
and other static files. - Remove
?deps
purge (close #420) - Remove
?export
query of sub build task - Upgrade
deno/std
to 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-fetch
polyfill for browsers and deno - Restart
ns
process when got "unreachable" error (close #448) - Fix
exports
resolver (close #422) - cjs-lexer: Update
swc
to latest
- Add
https://esm.sh/build-target
endpoint to return the buildtarget
of current browser/runtime by checkingUser-Agent
header. - Support
--npm-token
option to support private packages (#435). - Update
polyfills/node_process
: replace timeout withqueueMicrotask
(#444). - Upgrade
deno/std
to 0.162.0.
- Update the fake node
fs
ployfill for browsers(addcreateReadStream
andcreateWriteStream
methods) - Check package name (close #424)
- Fix some invalid types bulids
- Upgrade esbuild to 0.15.9
- Fix
web-streams-ponyfill
build (close #417) - Fix invalid
?deps
and?alias
resolving - Fix
solid-js/web
build for Deno - Add
add react:preact/compat
pattern for the deno CLI
- Downgrade
deno/std
to 0.153.0.
- Fix
@types/react
version (close #331) - Fix cjs
__esModule
resolving (close #410) - Fix
postcss-selector-parser
cjs exports (close #411) - Fix
solid-js/web
ofdeno
target - Upgrade
deno/std
to 0.154.0
- Add
stable
channel for UI libraries like react, to avoid multiple copies of runtime by cachehttps://esm.sh/v92/[email protected]/deno/react.js -> https://esm.sh/stable/[email protected]/deno/react.js
- Respect
external all
arg in types build - Upgrade
deno/std
to 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
imports
of package.json (close #400) - Update
npmNaming
range (close #401)
- Experimentally add Deno CLI mode, it will update the
import_map.json
file 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.json
in yourdeno run
command or thedeno.json
file. - Support
/v89/*some-package@version
external all pattern, do NOT use directly, use the CLI mode instead. - Redirect urls with
/@types/
to the.d.ts
file instead of build - Improve node service stability
- Fix cjs
__exportStar
not used (close #389) - Fix
resolve
package (close #392) - Add workaround for
prisma
build - Upgrade deno std to 0.151.0
- support
?deno-std=$VER
to specify the deno std version for deno node polyfills - fix missed
__esModule
export
- Respect
exports.development
conditions inpackage.json
(close #375) - Fix
solid-js/web?target=deno
strip ssr functions - Fix
@types/node
types transforming (close #363) - Fix
?external
doesn't support.dts
files (close #374) - Fix invalid export names of
keycode
,vscode-oniguruma
&lru_map
(close #362, #369) - Fix esm resolving before build (close #377)
- Support
?external
query, this will give you better user experience when you are using import maps.// import_map.json { "imports": { "preact": "https://esm.sh/[email protected]", "preact-render-to-string": "https://esm.sh/[email protected]?external=preact", } }
- 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-names
query for esbuild (close #345)
- Fix
fixAliasDeps
function that imports multiple React when using?deps=react@18,react-dom@18
- Fix types version resolving with
?deps
query(close #338) - Fix URL redirect with outdated build version prefix
- Replace
node-fetch
dep tonode-fetch-native
(close #336) - Add
--keep-names
option for esbuild by default (close #335) - Fix incorrect types with
?alias
query
- fix types with
?deps
query (close #333)
- fix
?deps
and?alias
depth query
- Fix build error in v79
- Use
esm.sh
instead ofcdn.esm.sh
- User semver versioning for the
x-typescript-types
header - 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
renderToReadableStream
export ofreact/server
in deno - Fix
fetchPackageInfo
dead loop (close #301) - Upgrade esbuild to 0.14.36
- Use the latest version of
deno/std/node
fromcdn.deno.land
automatically - Add
es2022
target - Upgrade esbuild to 0.14.34
- Fix
?deps
mode
- Fix types build version ignore
?pin
(close #292) - Infect
?deps
and?alias
to dependencies (close #235) - Bundle
?worker
by default - Upgrade semver to v3 (close #297)
- Upgrade esbuild to 0.14.31
- Upgrade deno std to 0.133.0 (close #298)
- Support
?no-require
flag, 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-runtime
with 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
bare
code whentarget
andpin
provided to reduce requests// https://esm.sh/[email protected] export * from "https://cdn.esm.sh/v69/[email protected]/es2021/react.js";
// https://esm.sh/[email protected]?target=es2020&pin=v70 {content just from https://cdn.esm.sh/v69/[email protected]/es2021/react.js}
- Rollback
parseCJSModuleExports
function to v68 (close #277, #279) - Fix
exports
resolving in package.json (close #278, #280) - Upgrade deno
std/node
to 0.130.0
- Force the dependency version of react equals to react-dom's version
before: [email protected] -> [email protected] now: [email protected] -> [email protected]
- Fix version check for prerelease (can't resolve
react
inreact-dom@rc
) - Improve cjs module transform (can handle more edge cases, for example react-18-rc defines non-esm for browsers and deno)
- Fix
bundle
mode (close #271) - Support
jsnext:main
in package.json (close #272) - Improve
cjs-esm-exports
to supportUMD
format// 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-runtime
andreact-refresh
into dev mode - Replace
typeof window !== undefined
totypeof document !== undefined
fordeno
target - Replace
object-assign
withObject.assign
- Upgrade
esbuild
to 0.14.25
- Improve
exports
resloving ofpackage.json
(close #179)
- Feature: Support
?path
query 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/node
polyfill to 0.125.0 - Upgrade
esbuild
to v0.14.18 - bugfixs for #251, #256, #261,#262
- Fix Node.js
process
compatibility (close #253) - Upgrade
deno.land/std/node
polyfill to 0.122.0
- Add fs polyfill(fake) for browsers (close #250)
- Upgrade
deno.land/std/node
polyfill to 0.121.0
- Support React new JSX transforms in Deno(1.16+) (close #225)
- improve
cjs-esm-exports
to support some edge cases:var foo = exports.foo || (exports.foo = {}); ((bar) => { ... })(exports.bar || (exports.bar = {}));
- Fix
@types
verisoning:marked
->@types/[email protected]
marked@2
->@types/[email protected]
marked?dep=@types/[email protected]
->@types/[email protected]
- Upgrade
deno.land/std/node
polyfill to 0.119.0 - Upgrade
esbuild
to v0.14.8
- Recover the stable queue
- Filter invalid pathnames like
/wp-admin/login.php
- Fix
?pin
mode when build failed (close #206)
- Add
?pin
mode - Improve build stability
- Fix
marked@4
import - Fix invalid types hangs forever (close #201)
cjs-esm-exports
supports tslib__exportStar
(close #197)- Improve node
perf_hooks
polyfill - Fix redeclared process polyfill (close #195)
- Fix
?worker
mode on deno (#198) - Add
he
tocjs-esm-exports
require 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
queue
interface - Support dataurl, .wasm import
- Import deno polyfills from https://deno.land/[email protected]/node
- Fix package CSS
- Update deno polyfills from 0.106.0 to 0.110.0 (#190)
- Add deno
module
polyfill (#164) - Fix (storage/fs_local) file path portability bug (#158)
- Fix types build (#149)
- Use
stream
andevents
from deno std/node (#136) @talentlessguy - Fix
localLRU
and allow formemoryLRU
(#148) @jimisaacs
- Fix build breaking change in v50 (#131).
- Add
localLRU
FS layer (#126) - Add a
Cache Interface
that is using to store temporary data like npm packages info. - Do not try to build
/favicon.ico
(#132) - Add lovely
pixi.js
,three.js
and@material-ui/core
testing 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/[email protected]/es2021/htmlparser2.js' const Parser = htmlparser2.Parser; // parser is undefined
import { Parser as htmlparser2Parser } from '/v48/[email protected]/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
?target
in 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-folder
config foryarn add
- Improve
resolveVersion
to 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
?alias
and?deps
to deps (fix #101) - Improve
cjs-lexer
sever (fix #103) - Upgrade rex to 1.4.1
- Upgrade esbuild to 0.12.24
- Improve build performance
- Filter
cjs-moudle-lexer
server invalid exports output - Improve
resolveVersion
function to support format like 4.x (fix #93) - Improve dts transform (fix #95)
- Add
Alias
feature (#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&[email protected]'
- Add
node
build target (#84) - Check
exports
field to get entry point inpackage.json
- Run cjs-lexer as a server
- Upgrade esbuild to 0.11.18 with
es2021
build target - Bugfixs for #90, #85, #83, #77, #65, #48, #41.
- Add
__esModule
reserved 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
bundle
mode - Fix build dead loop
- Upgrade esbuild to 0.11.12
- Update polyfills for node builtin modules
- Upgrade esbuild to 0.11.9
- Imporve
parseCJSModuleExports
to support json module - Pass
NODE_ENV
toparseCJSModuleExports
- Update node buffer polyfill
- Upgrade postdb to v0.6.2
- Fix build for packages with
module
type (#48) - Improve
parseCJSModuleExports
function (use cjs-module-lexer and nodejs eval both to parse cjs exports, and ignore JSON module) - Pass
NODE_ENV
toparseCJSModuleExports
function - 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
target
by theuser-agent
of 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 (fix #41)
- Upgrade esbuild to 0.11.4
- Upgrade rex to 1.3.0