Skip to content

Commit

Permalink
Add package.json exports field (#773)
Browse files Browse the repository at this point in the history
These changes adds an `exports` field to package.json with the main
goal of allowing the root/main export to be our ESM syntax version of
the package, as opposed to the UMD/CommonJS version.

This will make it easier for using projects written with ESM to use
mustache.js out of the box, without having to figure out that they'd
have to `import mustache/mustache.mjs` to get the ESM version.

It is also assumed to be beneficial for tools like http://skypack.dev
to choose the correct ESM version when appropriate.

Refs https://nodejs.org/api/packages.html#packages_package_entry_points
  • Loading branch information
manzt committed Mar 14, 2021
1 parent f15befd commit ea3adcf
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/usage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,11 @@ jobs:
export UNPACK_DESTINATION=$(mktemp -d)
mv mustache.tgz $UNPACK_DESTINATION
cp test/module-systems/esm-test.mjs $UNPACK_DESTINATION
cp test/module-systems/esm-test-exports.mjs $UNPACK_DESTINATION
cd $UNPACK_DESTINATION
npm install mustache.tgz
node esm-test.mjs
node esm-test-exports.mjs
browser-usage:
runs-on: ubuntu-latest
Expand Down
7 changes: 7 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@
"mustache.min.js",
"wrappers/"
],
"exports": {
".": {
"import": "./mustache.mjs",
"require": "./mustache.js"
},
"./*": "./*"
},
"volo": {
"url": "https://raw.github.com/janl/mustache.js/{version}/mustache.js"
},
Expand Down
12 changes: 12 additions & 0 deletions test/module-systems/esm-test-exports.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import assert from 'assert';
import mustache from 'mustache';

const view = {
title: 'Joe',
calc: () => 2 + 4
};

assert.strictEqual(
mustache.render('{{title}} spends {{calc}}', view),
'Joe spends 6'
);

0 comments on commit ea3adcf

Please sign in to comment.