Skip to content

Commit

Permalink
added esm & UMD
Browse files Browse the repository at this point in the history
morrys committed Jan 17, 2023
1 parent 542b8f0 commit b0f8b4f
Showing 6 changed files with 2,156 additions and 72 deletions.
5 changes: 5 additions & 0 deletions .babelrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
const plugin = require('babel-preset-fbjs/plugins/dev-expression');

module.exports = {
plugins: [plugin]
}
2,091 changes: 2,022 additions & 69 deletions package-lock.json

Large diffs are not rendered by default.

23 changes: 20 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -10,6 +10,8 @@
"validation"
],
"main": "lib/index.js",
"module": "./lib/es/index.js",
"unpkg": "lib/umd/relay-forms.min.js",
"license": "MIT",
"description": "Relay Forms",
"author": {
@@ -23,13 +25,16 @@
"scripts": {
"clean": "rimraf lib",
"relay": "relay-compiler --src ./compile/ --schema ./forms.graphql --language typescript --artifactDirectory ./src/relay --persist-output ./ignore-queries.json",
"compile": "npm run clean && tsc",
"compile": "npm run clean && tsc && tsc --project tsconfig.esm.json && npm run build:js && npm run build:replace && npm run rollup",
"build": "npm run compile && npm run test",
"test": "cross-env NODE_ENV=test jest --coverage",
"format": "prettier --write \"src/**/*.ts*\" \"!src/relay/**/*.ts\"",
"format:ci": "prettier --list-different \"src/**/*.ts*\" \"!src/relay/**/*.ts\"",
"eslint": "eslint ./src --ext .js,.jsx,.ts,.tsx",
"prepublishOnly": "npm run build"
"prepublishOnly": "npm run build",
"build:js": "babel lib --out-dir lib --extensions \".js,.jsx\" && babel lib/es --out-dir lib/es --extensions \".js,.jsx\"",
"build:replace": "replace-in-file --configFile=replace.config.js",
"rollup": "rollup -c"
},
"dependencies": {
"fbjs": "^1.0.0"
@@ -40,6 +45,9 @@
"relay-hooks": "^7.2.0"
},
"devDependencies": {
"@babel/cli": "^7.8.3",
"@babel/runtime": "7.20.7",
"babel-preset-fbjs": "^3.3.0",
"@types/babel__traverse": "7.18.2",
"cross-env": "6.0.3",
"typescript": "3.8.3",
@@ -52,6 +60,7 @@
"relay-runtime": "^14.0.0",
"relay-compiler": "^14.0.0",
"relay-hooks": "^7.2.0",
"replace-in-file": "6.2.0",
"react-test-renderer": "^18.0.0",
"relay-test-utils": "^14.0.0",
"relay-test-utils-internal": "^14.0.0",
@@ -74,6 +83,14 @@
"rimraf": "^2.5.4",
"@types/node": "13.9.3",
"relay-compiler-language-typescript": "12.0.0",
"@testing-library/react": "13.4.0"
"@testing-library/react": "13.4.0",
"rollup": "^2.23.0",
"rollup-plugin-sourcemaps": "0.6.2",
"rollup-plugin-terser": "^6.1.0",
"rollup-plugin-typescript2": "^0.27.1",
"@rollup/plugin-commonjs": "14.0.0",
"@rollup/plugin-node-resolve": "^8.4.0",
"@rollup/plugin-replace": "^2.3.3",
"@rollup/plugin-babel": "5.2.2"
}
}
5 changes: 5 additions & 0 deletions replace.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module.exports = {
files: 'lib/**/*.*',
from: /import \* as /g,
to: 'import ',
};
97 changes: 97 additions & 0 deletions rollup.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
/* eslint-disable @typescript-eslint/explicit-function-return-type */
/* eslint-disable @typescript-eslint/camelcase */
/* eslint-disable import/no-default-export */
import babel from '@rollup/plugin-babel';
import commonjs from '@rollup/plugin-commonjs';
import nodeResolve from '@rollup/plugin-node-resolve';
import replace from '@rollup/plugin-replace';
import sourceMaps from 'rollup-plugin-sourcemaps';
import { terser } from 'rollup-plugin-terser';
import typescript from 'rollup-plugin-typescript2';
import pkg from './package.json';

const makeExternalPredicate = (externalArr) => {
if (externalArr.length === 0) {
return () => false;
}
const pattern = new RegExp(`^(${externalArr.join('|')})($|/)`);
return (id) => pattern.test(id);
};

const extensions = ['.ts', '.tsx'];

function createConfigInternal({ format, production }) {
return {
input: 'src/index.ts',
output: {
file: 'lib/' + format + '/relay-forms' + (production ? '.min' : '') + '.js',
format,
name: 'relay-forms',
indent: false,
globals: {
'fbjs/lib/areEqual': 'areEqual',
'fbjs/lib/invariant': 'invariant',
'fbjs/lib/warning': 'warning',
'@restart/hooks/useMounted': 'useMounted',
react: 'React',
'relay-runtime': 'relayRuntime',
},
sourcemap: true,
exports: 'named',
},
external: makeExternalPredicate([
...Object.keys(pkg.dependencies || {}),
...Object.keys(pkg.peerDependencies || {}),
]),
plugins: [
nodeResolve({
extensions,
}),
replace({
'import * as ': 'import ',
}),
typescript({
tsconfigOverride: {
compilerOptions: {
declaration: false,
declarationMap: false,
module: 'es2015',
esModuleInterop: true,
sourceMap: true,
importHelpers: false,
},
},
}),
format === 'umd' &&
commonjs({
include: /\/node_modules\//,
}),
babel({ extensions, include: ['src/**/*'], babelHelpers: 'bundled' }),
replace({
'process.env.NODE_ENV': JSON.stringify(production ? 'production' : 'development'),
}),
sourceMaps(),
production &&
terser({
output: { comments: false },
compress: {
keep_infinity: true,
pure_getters: true,
passes: 10,
},
ecma: 5,
toplevel: format === 'cjs',
warnings: true,
}),
],
};
}

function createConfig(format) {
return [
createConfigInternal({ format, production: false }),
createConfigInternal({ format, production: true }),
];
}

export default [...createConfig('umd')];
7 changes: 7 additions & 0 deletions tsconfig.esm.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "ESNext",
"outDir": "./lib/es"
},
}

0 comments on commit b0f8b4f

Please sign in to comment.