-
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/[email protected]/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 "[email protected]" import "/[email protected]/es2022/react.mjs"; // after "[email protected]" 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
nodejs
andpnpm
dependencies. -
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
exports
field 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
unenv
node runtime modules directly via/node/[node-builtin-module-name].mjs
path, for example:import * from "https://esm.sh/node/fs.mjs";
-
Add npm-replacements that follows e18e's module-replacements. (#914)
The
npm-replacements
package replaces certain polyfill packages on NPM with native modern APIs during the build process. For example, theobject-assign
package 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
?pin
query 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 "[email protected]" -> "https://esm.sh/v135/[email protected]/es2022/react.mjs"; // after "[email protected]" -> "https://esm.sh/[email protected]/es2022/react.mjs";
-
Deprecate the
build
APIimport { 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:[email protected] Add jsr:@std/[email protected] # do not use deno run -A -r https://esm.sh init error: The deno CLI has been deprecated.
-
Add
npmScopedRegistries
configThe
npmScopedRegistries
configuration 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
.vue
and.svelte
files on the fly (#906)import "https://esm.sh/gh/phosphor-icons/[email protected]/src/icons/[email protected]"
- https://esm.sh/x - ts/jsx/vue/svelte just works™️ in browser. (#886)
- Build
-
Other Changes:
- Upgrade esbuild to 0.24.2
- Use native [email protected]
- Use target
es2022
for browsers by default (#903) - Replace
window
withglobalThis
to make Deno 2 happy (#964) - Use
.mjs
extenstion for sub-module build (#917) - dts-transformer: support
.d
extension - config: Add
corsAllowOrigins
config - config: Add
customLandingPage
config (#928) - config: Add
npmQueryCacheTTL
config (#921) - config: Add npmQueryCacheTTL config (#921)
- config: Support S3-compatible storage (#886)
- Introduce https://esm.sh/run
- worker: Use
raw.esm.sh
hostname for ?raw option - Add
?no-bundle
option - Support
esm.sh
field in package.json - Fix sub-module resolving (close #754, #743)
- Upgrade esbuild to 0.19.7
- Add
transformOnly
option for build api - Add
allowList
in 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
.npmrc
file ifNpmRegistry
is set (close #737) (#751 by @edeustace) - Upgrade esbuild to 0.19.5
- Add
?raw
to support requests for raw package source files (#731 by @johnyanarella) - Add global
setMaxListeners
tonode:events
polyfill (#719) - cjs-lexer: resolving error now doesn't break build (close #738)
- Fix
cwd
method ofnode:process
polyfill (close #718) - Fix
applyConditions
function usenode
condition for browser (close #732) - Fix
*.css.js
path (close #728) - Fix some invalid require imports (close #724)
- Fix relative path resolving of
browser
in package.json - Upgrade esbuild to 0.19.4
- Resolve node internal modules when
?external=*
set (close #714) - Fix builds with
bigint
andtop-level-await
for all targets (close #711) - Fix
node:process
ployfill module mssing thehrtime
method - Fix docker image missing
git
command - esm-worker: add
varyUA
option for polyfill modules
- Add cache layer for the
/build
API - Fix dts transformer resolver ignoring
*.mjs
url - fix
?external
option ignoring sub-modules - Use raw order of the
exports
in 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
.mjs
module (close #691) - Fix
?bundle
mode ignoresnode_process.js
(close #694) - Upgrade
@types/react@18
to 18.2.15 - Upgrade esbuild to 0.18.17
- BREAKING: Remove
x-esm-deps
header (close #683) - Sort
exports
of package.json when looping (close #683) - Don't replace
typeof window
for 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-origin
header
- Add official Docker image: https://ghcr.io/esm-dev/esm.sh
- Fix missed
?external
of deps - Fix duplicate
Access-Control-Expose-Headers
headers - Fix dts transform for imports with both default and named imports (#675 by @hayes)
- Don't bundle dynamic imports
- Upgrade stableBuild to v128
- Add
preload
imports - Add
modern-normalize
to 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
esm
tag 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-fetch
import in cjs modules (close #649) - Add
node:worker_threads
polyfill(fake) (close #648) - Use
denonext
target for Deno >= 1.33.2 (close #646) - Fix
.json.js
path (close #645) - Fix cache missing content (close #641)
- Upgrade
deno/std
to 0.177.1
- Fix the dts walker (close #642)
- Add
/server
endpoint for Deno to serve esm.sh locally - Add scope to config (#636 by @johnpangalos)
- Fix
.d.ts
walker (close #640) - Fix packages with
v
prefix inversion
(close #639) - Fix
findFiles
function (close #638)
- Use stable imports order
- Support more asset extnames
- esm-worker: Use
X-Real-Origin
andX-Esm-Worker-Version
headers - Fix worker
CORS
issue (close #631) - Fix sub-module resolving (close #633)
- Fix undefined content-type header (close #635)
- Use
browser
field for package main if possible{ "name": "pkg", "version": "1.0.0", "main": "./index.js", "browser": { "./index.js": "./browser.js" } }
- Fix redirects for
?css
andGET /build
- Fix
*.js.js
module path (close #627) - Fix cjs imports (close #629, #626)
- Add
pako
to therequireModeAllowList
- build-api: Support types option
- Open-source the cloudflare worker
- Support
HEAD
method - Fix bare path for css/custom build
- Fixing type only packages missing the
X-Typescript-Types
header - Fix cjs-lexer
exports
resloving - Use empty object instead of
null
for browser exclude (close #613) - Add
zlib-sync
to nativeNodePackages (close #621) - Redirect invalid
*.json
url
- Fix named import of cjs (close #620)
- Use
STABKE_VERSION
for dts build ofstableBuild
- Upgrade esbuild to 0.17.18
- feat: Publish system (#607)
- esm-cjs-lexer: Support
__export(require("..."))
pattern (close #611) - Add
Auth
middleware - Upgrade
stableBuild
to 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
.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