cjs და esm-ის შექმნა TypeScript პროექტის რეფერენციებით მონორეპოში
მე მაქვს TypeScript მონორეპოს პროტოტიპი დაყენებული და მუშაობს cjs, yarn სამუშაო სივრცეებით და პროექტის რეფერენციებით ინკრემენტული აშენებებით:
https://github.com/rosskevin/learn-a/tree/build-cjs-esm
მაშინ როცა tsc -b იყენებს სტანდარტულ tsconfig.json-ს თითოეულ პროექტში და ისინი ყოველთვის cjs-ისთვის არიან გაწყობილი, მსურს უბრალოდ გადავცე გადატვირთვები command line-ის საშუალებით:
yarn tsc -b --outDir lib/esm --module esnext --target esnext ✘ 127
yarn run v1.12.3
/Users/kross/projects/js/node_modules/.bin/tsc -b --outDir lib/esm --module esnext --target esnext
error TS5072: Unknown build option '--outDir'.
error TS5072: Unknown build option '--module'.
error TS5072: Unknown build option '--target'.
error Command failed with exit code 1.
რა არის საუკეთესო გზა იმისათვის, რომ მიიღოთ როგორც CJS, ასევე ESM ბილდი ტაიპსქრიპტის პროექტისთვის, რომელიც იყენებს პროექტების რეფერენციებს?
უპასუხე #1
ერთდროულად ორივე მიზნისთვის (შესაძლებლობის შემთხვევაში ინკრემენტალური გამოყენებით) შენარჩუნების ერთადერთ გზაა, ინკრემენტალები შესრულდეს cjs-ისთვის tsc -b და არასაინკრემენტალო (თითქმის) თითოეული სხვა პროექტისთვის.
ეს ამჟამად მუშაობს:
"build": "tsc -b",
"build:esm": "lerna exec --stream --parallel -- ../../node_modules/.bin/tsc --outDir lib/esm --module esnext --target esnext",
აქ არის პროტოტიპის რეპო:
https://github.com/rosskevin/learn-a
პასუხი #2
მისამართზე https://www.typescriptlang.org/docs/handbook/compiler-options.html
-b --შექმნა
აშენებს ამ პროექტს და მის ყველა დამოკიდებულებას, რომელიც მითითებულია პროექტის მითითებით. გაითვალისწინეთ, რომ ეს დროშა არ არის თავსებადი ამ გვერდის სხვებთან. იხილეთ მეტი აქ https://www.typescriptlang.org/docs/handbook/project-references.html
