11import path from "node:path" ;
2- import { existsSync } from "node:fs" ;
32import { readFile } from "node:fs/promises" ;
43import { createRequire } from "node:module" ;
54import webpack from "webpack" ;
@@ -8,6 +7,8 @@ import postcssPresetEnv from "postcss-preset-env";
87import cssnano from "cssnano" ;
98import cssnanoPresetLite from "cssnano-preset-lite" ;
109import _ from "lodash" ;
10+ import commonBricksJson from "@next-shared/common-bricks/common-bricks.json" assert { type : "json " } ;
11+ import deprecatedBricksJson from "@next-shared/common-bricks/deprecated-bricks.json" assert { type : "json " } ;
1112import EmitBricksJsonPlugin from "./EmitBricksJsonPlugin.js" ;
1213import getCamelPackageName from "./getCamelPackageName.js" ;
1314import getSvgrLoaders from "./getSvgrLoaders.js" ;
@@ -74,25 +75,8 @@ async function getWebpackConfig(config) {
7475
7576 /** @type {string[] } */
7677 let commonBricks ;
77- const commonBricksJsonFile = path . join (
78- packageDir ,
79- "../../shared/common-bricks/common-bricks.json"
80- ) ;
81-
82- const deprecatedBricksJsonFile = path . join (
83- packageDir ,
84- "../../shared/common-bricks/deprecated-bricks.json"
85- ) ;
86-
87- const deprecatedBricksJson = existsSync ( deprecatedBricksJsonFile )
88- ? JSON . parse ( await readFile ( deprecatedBricksJsonFile , "utf-8" ) )
89- : { } ;
90-
91- if ( existsSync ( commonBricksJsonFile ) ) {
92- const commonBricksJson = JSON . parse (
93- await readFile ( commonBricksJsonFile , "utf-8" )
94- ) ;
9578
79+ if ( commonBricksJson ) {
9680 /** @type {Map<string, string | string[]> } */
9781 const commonBricksMap = new Map ( ) ;
9882 for ( const [ pkg , bricks ] of Object . entries ( commonBricksJson ) ) {
@@ -213,18 +197,21 @@ async function getWebpackConfig(config) {
213197 packageJson . peerDependencies ?. [ dep ] ??
214198 packageJson . devDependencies ?. [ dep ] ??
215199 packageJson . dependencies ?. [ dep ] ;
200+ const singleton = sharedSingletonPackages . includes ( dep ) ;
216201
217202 return [
218203 dep ,
219204 {
220- singleton : sharedSingletonPackages . includes ( dep ) ,
205+ singleton,
221206 version : depPackageJson . version ,
222207 requiredVersion :
223208 getRequiredVersion ( depPkgName ) ??
224209 // Use react required version for react-dom if it is not specified
225210 ( depPkgName === "react-dom"
226211 ? getRequiredVersion ( "react" )
227- : undefined ) ,
212+ : singleton
213+ ? "*"
214+ : undefined ) ,
228215 ...customized ,
229216 } ,
230217 ] ;
@@ -265,7 +252,7 @@ async function getWebpackConfig(config) {
265252 const invalidElements = _ . difference ( elements , commonBricks ) ;
266253 if ( invalidElements . length > 0 ) {
267254 throw new Error (
268- `Find common bricks in \`${ packageName } \` which are not in common-bricks.json: ${ invalidElements . join (
255+ `Find common bricks in \`${ packageName } \` which are not in @next-shared/common-bricks/ common-bricks.json: ${ invalidElements . join (
269256 ", "
270257 ) } `
271258 ) ;
0 commit comments