Skip to content

Commit 6cf6ffa

Browse files
committed
feat: setup universal browser and node builds
In this diff I fixed es modules distribution for bundlers. Before we had two problems - bundlers use "module" field to find es module build - bundlers cannot use provided es module with node target In this diff I addressed both of them. Now "main" and "module" fields points to "node" specific versions. "browser" field provides aliases with browser compatible builds. All modern browsers support both "module" and "browser" fields.
1 parent 04873a4 commit 6cf6ffa

File tree

3 files changed

+44
-18
lines changed

3 files changed

+44
-18
lines changed

package.json

+8-4
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,13 @@
22
"name": "liquidjs",
33
"version": "9.13.0",
44
"description": "A simple, expressive, safe and Shopify compatible template engine in pure JavaScript.",
5-
"main": "dist/liquid.cjs.js",
6-
"es2015": "dist/liquid.esm.js",
7-
"browser": "dist/liquid.js",
5+
"main": "dist/liquid.node.cjs.js",
6+
"module": "dist/liquid.node.esm.js",
7+
"es2015": "dist/liquid.browser.esm.js",
8+
"browser": {
9+
"./dist/liquid.node.cjs.js": "./dist/liquid.browser.umd.js",
10+
"./dist/liquid.node.esm.js": "./dist/liquid.browser.esm.js"
11+
},
812
"types": "dist/liquid.d.ts",
913
"scripts": {
1014
"lint": "eslint .",
@@ -16,7 +20,7 @@
1620
"benchmark": "node --expose-gc benchmark/index",
1721
"coverage": "nyc --reporter=html mocha \"test/{unit,integration}/**/*.ts\"",
1822
"coverage-coveralls": "nyc mocha \"test/{unit,integration}/**/*.ts\" && nyc report --reporter=text-lcov | coveralls",
19-
"build": "rollup -c rollup.config.ts && ls -lh dist",
23+
"build": "rm -rf dist && rollup -c rollup.config.ts && ls -lh dist",
2024
"build-docs": "bin/build-docs.sh",
2125
"watch": "tsc --watch"
2226
},

rollup.config.ts

+35-13
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ const treeshake = {
1515
}
1616
const input = './src/liquid.ts'
1717

18-
const cjs = {
18+
const nodeCjs = {
1919
output: [{
20-
file: 'dist/liquid.cjs.js',
20+
file: 'dist/liquid.node.cjs.js',
2121
format: 'cjs',
2222
banner
2323
}],
@@ -36,9 +36,31 @@ const cjs = {
3636
input
3737
}
3838

39-
const esm = {
39+
const nodeEsm = {
4040
output: [{
41-
file: 'dist/liquid.esm.js',
41+
file: 'dist/liquid.node.esm.js',
42+
format: 'esm',
43+
banner
44+
}],
45+
external: ['path', 'fs'],
46+
plugins: [typescript({
47+
tsconfigOverride: {
48+
include: [ 'src' ],
49+
exclude: [ 'test', 'benchmark' ],
50+
compilerOptions: {
51+
target: 'ES2017',
52+
module: 'ES2015'
53+
}
54+
}
55+
})],
56+
treeshake,
57+
input
58+
}
59+
60+
61+
const browserEsm = {
62+
output: [{
63+
file: 'dist/liquid.browser.esm.js',
4264
format: 'esm',
4365
banner
4466
}],
@@ -64,9 +86,9 @@ const esm = {
6486
input
6587
}
6688

67-
const umd = {
89+
const browserUmd = {
6890
output: [{
69-
file: 'dist/liquid.js',
91+
file: 'dist/liquid.browser.umd.js',
7092
name: 'liquidjs',
7193
format: 'umd',
7294
sourcemap,
@@ -93,9 +115,9 @@ const umd = {
93115
input
94116
}
95117

96-
const min = {
118+
const browserMin = {
97119
output: [{
98-
file: 'dist/liquid.min.js',
120+
file: 'dist/liquid.browser.min.js',
99121
name: 'liquidjs',
100122
format: 'umd',
101123
sourcemap
@@ -124,10 +146,10 @@ const min = {
124146

125147
const bundles = []
126148
const env = process.env.BUNDLES || ''
127-
if (env.includes('cjs')) bundles.push(cjs)
128-
if (env.includes('esm')) bundles.push(esm)
129-
if (env.includes('umd')) bundles.push(umd)
130-
if (env.includes('min')) bundles.push(min)
131-
if (bundles.length === 0) bundles.push(cjs, umd, min, esm)
149+
if (env.includes('cjs')) bundles.push(nodeCjs)
150+
if (env.includes('esm')) bundles.push(nodeEsm, browserEsm)
151+
if (env.includes('umd')) bundles.push(browserUmd)
152+
if (env.includes('min')) bundles.push(browserMin)
153+
if (bundles.length === 0) bundles.push(nodeCjs, nodeEsm, browserEsm, browserUmd, browserMin)
132154

133155
export default bundles

test/e2e/xhr.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Liquid } from '../../dist/liquid.js'
1+
import { Liquid } from '../../dist/liquid.browser.umd.js'
22
import * as sinon from 'sinon'
33
import { expect, use } from 'chai'
44
import { JSDOM } from 'jsdom'

0 commit comments

Comments
 (0)