Merge pull request #234 from TrySound/proper-modules

feat: setup universal browser and node builds
This commit is contained in:
Jun Yang
2020-06-25 20:08:47 +08:00
committed by GitHub
3 changed files with 44 additions and 18 deletions
+8 -4
View File
@@ -2,9 +2,13 @@
"name": "liquidjs", "name": "liquidjs",
"version": "9.13.0", "version": "9.13.0",
"description": "A simple, expressive, safe and Shopify compatible template engine in pure JavaScript.", "description": "A simple, expressive, safe and Shopify compatible template engine in pure JavaScript.",
"main": "dist/liquid.cjs.js", "main": "dist/liquid.node.cjs.js",
"es2015": "dist/liquid.esm.js", "module": "dist/liquid.node.esm.js",
"browser": "dist/liquid.js", "es2015": "dist/liquid.browser.esm.js",
"browser": {
"./dist/liquid.node.cjs.js": "./dist/liquid.browser.umd.js",
"./dist/liquid.node.esm.js": "./dist/liquid.browser.esm.js"
},
"types": "dist/liquid.d.ts", "types": "dist/liquid.d.ts",
"scripts": { "scripts": {
"lint": "eslint .", "lint": "eslint .",
@@ -16,7 +20,7 @@
"benchmark": "node --expose-gc benchmark/index", "benchmark": "node --expose-gc benchmark/index",
"coverage": "nyc --reporter=html mocha \"test/{unit,integration}/**/*.ts\"", "coverage": "nyc --reporter=html mocha \"test/{unit,integration}/**/*.ts\"",
"coverage-coveralls": "nyc mocha \"test/{unit,integration}/**/*.ts\" && nyc report --reporter=text-lcov | coveralls", "coverage-coveralls": "nyc mocha \"test/{unit,integration}/**/*.ts\" && nyc report --reporter=text-lcov | coveralls",
"build": "rollup -c rollup.config.ts && ls -lh dist", "build": "rm -rf dist && rollup -c rollup.config.ts && ls -lh dist",
"build-docs": "bin/build-docs.sh", "build-docs": "bin/build-docs.sh",
"watch": "tsc --watch" "watch": "tsc --watch"
}, },
+35 -13
View File
@@ -15,9 +15,9 @@ const treeshake = {
} }
const input = './src/liquid.ts' const input = './src/liquid.ts'
const cjs = { const nodeCjs = {
output: [{ output: [{
file: 'dist/liquid.cjs.js', file: 'dist/liquid.node.cjs.js',
format: 'cjs', format: 'cjs',
banner banner
}], }],
@@ -36,9 +36,31 @@ const cjs = {
input input
} }
const esm = { const nodeEsm = {
output: [{ output: [{
file: 'dist/liquid.esm.js', file: 'dist/liquid.node.esm.js',
format: 'esm',
banner
}],
external: ['path', 'fs'],
plugins: [typescript({
tsconfigOverride: {
include: [ 'src' ],
exclude: [ 'test', 'benchmark' ],
compilerOptions: {
target: 'ES2017',
module: 'ES2015'
}
}
})],
treeshake,
input
}
const browserEsm = {
output: [{
file: 'dist/liquid.browser.esm.js',
format: 'esm', format: 'esm',
banner banner
}], }],
@@ -64,9 +86,9 @@ const esm = {
input input
} }
const umd = { const browserUmd = {
output: [{ output: [{
file: 'dist/liquid.js', file: 'dist/liquid.browser.umd.js',
name: 'liquidjs', name: 'liquidjs',
format: 'umd', format: 'umd',
sourcemap, sourcemap,
@@ -93,9 +115,9 @@ const umd = {
input input
} }
const min = { const browserMin = {
output: [{ output: [{
file: 'dist/liquid.min.js', file: 'dist/liquid.browser.min.js',
name: 'liquidjs', name: 'liquidjs',
format: 'umd', format: 'umd',
sourcemap sourcemap
@@ -124,10 +146,10 @@ const min = {
const bundles = [] const bundles = []
const env = process.env.BUNDLES || '' const env = process.env.BUNDLES || ''
if (env.includes('cjs')) bundles.push(cjs) if (env.includes('cjs')) bundles.push(nodeCjs)
if (env.includes('esm')) bundles.push(esm) if (env.includes('esm')) bundles.push(nodeEsm, browserEsm)
if (env.includes('umd')) bundles.push(umd) if (env.includes('umd')) bundles.push(browserUmd)
if (env.includes('min')) bundles.push(min) if (env.includes('min')) bundles.push(browserMin)
if (bundles.length === 0) bundles.push(cjs, umd, min, esm) if (bundles.length === 0) bundles.push(nodeCjs, nodeEsm, browserEsm, browserUmd, browserMin)
export default bundles export default bundles
+1 -1
View File
@@ -1,4 +1,4 @@
import { Liquid } from '../../dist/liquid.js' import { Liquid } from '../../dist/liquid.browser.umd.js'
import * as sinon from 'sinon' import * as sinon from 'sinon'
import { expect, use } from 'chai' import { expect, use } from 'chai'
import { JSDOM } from 'jsdom' import { JSDOM } from 'jsdom'