Skip to content

Commit 4895a74

Browse files
committed
fix(package) Add Node CJS build
1 parent 2369977 commit 4895a74

3 files changed

Lines changed: 53 additions & 33 deletions

File tree

babel.config.cjs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,15 @@ module.exports = api => {
1313

1414
const env = api.env()
1515

16-
if (env === 'browser') {
16+
if (env === 'cjs' || env === 'es') {
17+
plugins.push(['@babel/plugin-transform-runtime', { version: dependencies['@babel/runtime'] }])
18+
presetEnv.modules = env === 'es' ? false : 'auto'
19+
} else if (env === 'umd') {
1720
presetEnv.targets = { esmodules: true }
1821
return { exclude: /core-js/, plugins, presets }
1922
}
2023

2124
presetEnv.targets = { node: true }
2225

23-
if (env === 'node') {
24-
plugins.push(['@babel/plugin-transform-runtime', { version: dependencies['@babel/runtime'] }])
25-
presetEnv.modules = false
26-
}
27-
2826
return { exclude: /node_modules/, plugins, presets }
2927
}

package.json

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,20 @@
2222
],
2323
"type": "module",
2424
"exports": {
25-
".": "./dist/node/index.js",
25+
".": {
26+
"import": "./dist/es/index.js",
27+
"require": "./dist/cjs/index.cjs"
28+
},
2629
"./package.json": "./package.json"
2730
},
28-
"unpkg": "dist/browser/react-utils.js",
31+
"unpkg": "dist/umd/react-utils.js",
2932
"scripts": {
3033
"prebuild": "rm -rf dist",
31-
"build:browser": "rollup -c --environment NODE_ENV:browser",
32-
"build:node": "babel src -d dist/node --env-name node",
33-
"build": "npm run build:browser && npm run build:node",
34-
"lint": "eslint src __tests__",
34+
"build:cjs": "rollup -c --environment NODE_ENV:cjs",
35+
"build:es": "babel src -d dist/es --env-name es",
36+
"build:umd": "rollup -c --environment NODE_ENV:umd",
37+
"build": "npm run build:cjs && npm run build:es && npm run build:umd",
38+
"lint": "eslint __tests__ src",
3539
"safe-publish": "npm run lint && npm run test && npm run build && npm publish",
3640
"test": "jest",
3741
"test:inspect": "node --inspect=0.0.0.0:9222 ./node_modules/.bin/jest --watchAll -b",

rollup.config.js

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,44 @@ import commonjs from '@rollup/plugin-commonjs'
44
import nodeResolve from '@rollup/plugin-node-resolve'
55
import replace from '@rollup/plugin-replace'
66
import { terser } from 'rollup-plugin-terser'
7-
import { unpkg } from './package.json'
7+
import { dependencies, exports, optionalDependencies, peerDependencies, unpkg } from './package.json'
88

9-
export default {
10-
external: ['@cdoublev/animate', 'react', 'prop-types'],
11-
input: 'src/index.js',
12-
output: {
13-
file: unpkg,
14-
format: 'umd',
15-
globals: {
16-
'@cdoublev/animate': 'animate',
17-
'prop-types': 'PropTypes',
18-
'react': 'React',
9+
export default process.env.NODE_ENV === 'cjs'
10+
? {
11+
input: 'src/index.js',
12+
external: new RegExp(`^(${
13+
Object.keys({
14+
...dependencies,
15+
...optionalDependencies,
16+
...peerDependencies,
17+
}).join('|')})`),
18+
output: {
19+
file: exports['.'].require,
20+
format: 'cjs',
1921
},
20-
name: 'ReactUtils',
21-
},
22-
plugins: [
23-
replace({ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV) }),
24-
nodeResolve(),
25-
babel({ babelHelpers: 'bundled' }),
26-
commonjs(),
27-
terser(),
28-
],
29-
}
22+
plugins: [
23+
babel({ babelHelpers: 'runtime' }),
24+
commonjs(),
25+
],
26+
}
27+
: {
28+
external: ['@cdoublev/animate', 'react', 'prop-types'],
29+
input: 'src/index.js',
30+
output: {
31+
file: unpkg,
32+
format: 'umd',
33+
globals: {
34+
'@cdoublev/animate': 'animate',
35+
'prop-types': 'PropTypes',
36+
'react': 'React',
37+
},
38+
name: 'ReactUtils',
39+
},
40+
plugins: [
41+
replace({ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV) }),
42+
nodeResolve(),
43+
babel({ babelHelpers: 'bundled' }),
44+
commonjs(),
45+
terser(),
46+
],
47+
}

0 commit comments

Comments
 (0)