Skip to content

Commit a47b621

Browse files
shlenskyyarastqt
authored andcommitted
feat: restore development build
- Add terser.config.js for production minification - Update build.js to generate 4 outputs: production.min + development (cjs/mjs) - Add index.cjs routers for NODE_ENV-based selection - Update package.json exports with development/production conditions - Prefer import over require in exports order
1 parent 9b4ae9e commit a47b621

File tree

10 files changed

+152
-23
lines changed

10 files changed

+152
-23
lines changed

packages/classname/index.cjs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
'use strict'
2+
3+
if (process.env.NODE_ENV === 'production') {
4+
module.exports = require('./build/classname.production.min.cjs')
5+
} else {
6+
module.exports = require('./build/classname.development.cjs')
7+
}

packages/classname/package.json

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,23 @@
1414
"build": "node ../../scripts/rollup/build.js",
1515
"unit": "../../node_modules/.bin/jest --config ../../.config/jest/jest.config.js"
1616
},
17-
"files": ["build", "classname.d.ts"],
18-
"main": "./build/classname.cjs",
19-
"module": "./build/classname.mjs",
17+
"files": ["build", "index.cjs", "classname.d.ts"],
18+
"main": "./index.cjs",
19+
"module": "./build/classname.production.min.mjs",
2020
"types": "./classname.d.ts",
2121
"exports": {
2222
".": {
2323
"types": "./classname.d.ts",
24-
"import": "./build/classname.mjs",
25-
"require": "./build/classname.cjs"
24+
"development": {
25+
"import": "./build/classname.development.mjs",
26+
"require": "./build/classname.development.cjs"
27+
},
28+
"production": {
29+
"import": "./build/classname.production.min.mjs",
30+
"require": "./build/classname.production.min.cjs"
31+
},
32+
"import": "./build/classname.production.min.mjs",
33+
"require": "./index.cjs"
2634
}
2735
}
2836
}

packages/classnames/index.cjs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
'use strict'
2+
3+
if (process.env.NODE_ENV === 'production') {
4+
module.exports = require('./build/classnames.production.min.cjs')
5+
} else {
6+
module.exports = require('./build/classnames.development.cjs')
7+
}

packages/classnames/package.json

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,23 @@
1414
"build": "node ../../scripts/rollup/build.js",
1515
"unit": "../../node_modules/.bin/jest --config ../../.config/jest/jest.config.js"
1616
},
17-
"files": ["build", "classnames.d.ts"],
18-
"main": "./build/classnames.cjs",
19-
"module": "./build/classnames.mjs",
17+
"files": ["build", "index.cjs", "classnames.d.ts"],
18+
"main": "./index.cjs",
19+
"module": "./build/classnames.production.min.mjs",
2020
"types": "./classnames.d.ts",
2121
"exports": {
2222
".": {
2323
"types": "./classnames.d.ts",
24-
"import": "./build/classnames.mjs",
25-
"require": "./build/classnames.cjs"
24+
"development": {
25+
"import": "./build/classnames.development.mjs",
26+
"require": "./build/classnames.development.cjs"
27+
},
28+
"production": {
29+
"import": "./build/classnames.production.min.mjs",
30+
"require": "./build/classnames.production.min.cjs"
31+
},
32+
"import": "./build/classnames.production.min.mjs",
33+
"require": "./index.cjs"
2634
}
2735
}
2836
}

packages/core/index.cjs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
'use strict'
2+
3+
if (process.env.NODE_ENV === 'production') {
4+
module.exports = require('./build/core.production.min.cjs')
5+
} else {
6+
module.exports = require('./build/core.development.cjs')
7+
}

packages/core/package.json

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,23 @@
2121
"peerDependencies": {
2222
"react": "^19.0.0"
2323
},
24-
"files": ["build", "core.d.ts"],
25-
"main": "./build/core.cjs",
26-
"module": "./build/core.mjs",
24+
"files": ["build", "index.cjs", "core.d.ts"],
25+
"main": "./index.cjs",
26+
"module": "./build/core.production.min.mjs",
2727
"types": "./core.d.ts",
2828
"exports": {
2929
".": {
3030
"types": "./core.d.ts",
31-
"import": "./build/core.mjs",
32-
"require": "./build/core.cjs"
31+
"development": {
32+
"import": "./build/core.development.mjs",
33+
"require": "./build/core.development.cjs"
34+
},
35+
"production": {
36+
"import": "./build/core.production.min.mjs",
37+
"require": "./build/core.production.min.cjs"
38+
},
39+
"import": "./build/core.production.min.mjs",
40+
"require": "./index.cjs"
3341
}
3442
}
3543
}

packages/di/index.cjs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
'use strict'
2+
3+
if (process.env.NODE_ENV === 'production') {
4+
module.exports = require('./build/di.production.min.cjs')
5+
} else {
6+
module.exports = require('./build/di.development.cjs')
7+
}

packages/di/package.json

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,23 @@
1717
"peerDependencies": {
1818
"react": "^19.0.0"
1919
},
20-
"files": ["build", "di.d.ts"],
21-
"main": "./build/di.cjs",
22-
"module": "./build/di.mjs",
20+
"files": ["build", "index.cjs", "di.d.ts"],
21+
"main": "./index.cjs",
22+
"module": "./build/di.production.min.mjs",
2323
"types": "./di.d.ts",
2424
"exports": {
2525
".": {
2626
"types": "./di.d.ts",
27-
"import": "./build/di.mjs",
28-
"require": "./build/di.cjs"
27+
"development": {
28+
"import": "./build/di.development.mjs",
29+
"require": "./build/di.development.cjs"
30+
},
31+
"production": {
32+
"import": "./build/di.production.min.mjs",
33+
"require": "./build/di.production.min.cjs"
34+
},
35+
"import": "./build/di.production.min.mjs",
36+
"require": "./index.cjs"
2937
}
3038
}
3139
}

scripts/rollup/build.js

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,14 @@ const rimraf = require('rimraf')
77
const gzipSize = require('gzip-size')
88
const prettyBytes = require('pretty-bytes')
99
const { rollup } = require('rollup')
10+
const { terser } = require('rollup-plugin-terser')
1011
const typescript2 = require('rollup-plugin-typescript2')
1112
const replace = require('rollup-plugin-replace')
1213
const nodeResolve = require('rollup-plugin-node-resolve')
1314
const stripBanner = require('rollup-plugin-strip-banner')
1415

16+
const { getTerserConfig } = require('./terser.config')
17+
1518
const { log } = console
1619
const packagePath = process.cwd()
1720

@@ -25,7 +28,8 @@ function getPlugins({ isProduction, tsConfigPath }) {
2528
tsconfig: tsConfigPath,
2629
useTsconfigDeclarationDir: true,
2730
}),
28-
]
31+
isProduction && terser(getTerserConfig()),
32+
].filter(Boolean)
2933
}
3034

3135
function getExternalDependencies(packagePath) {
@@ -78,15 +82,25 @@ function getPackageData(packagePath) {
7882
inputFile,
7983
outputs: [
8084
{
81-
outputFile: resolve(buildPath, `${packageName}.cjs`),
85+
outputFile: resolve(buildPath, `${packageName}.production.min.cjs`),
8286
isProduction: true,
8387
isESM: false,
8488
},
8589
{
86-
outputFile: resolve(buildPath, `${packageName}.mjs`),
90+
outputFile: resolve(buildPath, `${packageName}.production.min.mjs`),
8791
isProduction: true,
8892
isESM: true,
8993
},
94+
{
95+
outputFile: resolve(buildPath, `${packageName}.development.cjs`),
96+
isProduction: false,
97+
isESM: false,
98+
},
99+
{
100+
outputFile: resolve(buildPath, `${packageName}.development.mjs`),
101+
isProduction: false,
102+
isESM: true,
103+
},
90104
],
91105
}
92106
}

scripts/rollup/terser.config.js

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
'use strict'
2+
3+
const nameCache = {}
4+
5+
module.exports.getTerserConfig = () => ({
6+
compress: {
7+
arrows: false,
8+
booleans_as_integers: true,
9+
booleans: true,
10+
collapse_vars: true,
11+
comparisons: true,
12+
computed_props: true,
13+
conditionals: true,
14+
dead_code: true,
15+
directives: true,
16+
drop_console: false,
17+
evaluate: true,
18+
hoist_funs: true,
19+
hoist_props: true,
20+
inline: true,
21+
join_vars: true,
22+
keep_classnames: false,
23+
keep_fnames: false,
24+
typeofs: true,
25+
loops: true,
26+
pure_getters: true,
27+
side_effects: true,
28+
switches: true,
29+
toplevel: true,
30+
unused: true,
31+
unsafe_math: true,
32+
unsafe_proto: true,
33+
properties: true,
34+
passes: 3,
35+
},
36+
mangle: {
37+
eval: true,
38+
keep_classnames: false,
39+
keep_fnames: false,
40+
module: true,
41+
safari10: false,
42+
toplevel: true,
43+
},
44+
output: {
45+
indent_level: 2,
46+
ascii_only: false,
47+
braces: false,
48+
comments: false,
49+
quote_keys: false,
50+
quote_style: 3,
51+
safari10: false,
52+
ecma: 5,
53+
},
54+
nameCache,
55+
})

0 commit comments

Comments
 (0)