Przejście na yarn workspaces

0

Przerabiam aplikację na yarn workspaces, dodałem package.json itd i mam workspace jako zależność. Instaluję pakiety, uruchamiam i krzyczy, że jest w tym workspace zabronione słowo kluczowe tj. export es6. Główna aplikacja używa backpacka i build używa modułów cjs. Wywnioskowałem, że muszę transpilować ten workspace do commonjs przy pomocy babela?

screenshot-20221125111830.png

0

import

0

Ale ja nie chcę nic importować, to jest główny index.js w workspace, w którym exportuje wszystkie składowe workspaca. Widziałem to w wielu przykładach i bibliotekach np. Nest.js.

Tuta j przykład, który koleżka mi dał https://github.com/PKrasinski/ESWall/blob/main/packages/ui/src/index.ts

Nawet jest w drugiej linijce stack trace /cjs/loader/. Build używa modułów cjs, a z workspaca robi się paczka z modułami esm, więc nie jest kompatybilna.

0

Pliki z rozszerzeniem cjs (CommonJS) działają jedynie z składnią require / module.exports, więc tak, pozostałe importy / exporty musisz zamienić na taki sam format.

Drugim rozwiązaniem byłoby zastąpienie tego backpacka innym narzędziem. Nie pamiętam, żeby np korzystając z Vite miałbym ten sam problem.

0

@Xarviel: Ale to są wszystkie pliki z rozszerzeniem js. Build idzie w cjs, a po dodaniu workspace jest on instalwany w node_modules i używa esm. To chyba da się transpilować babelem zależność korzystającą z esm do cjs? Jest taki plugin: https://babeljs.io/docs/en/babel-plugin-transform-modules-commonjs

No, bo patrz, załóżmy, że piszę bibliotekę z modułami esm i puszczam na npma. To co teraz nikt jej nie będzie mógł użyć w projekcie korzystającym z cjs?

0
szafran98 napisał(a):

No, bo patrz, załóżmy, że piszę bibliotekę z modułami esm i puszczam na npma. To co teraz nikt jej nie będzie mógł użyć w projekcie korzystającym z cjs?

Bezpośrednio w przeglądarce cjs nie przejdzie, więc ktoś musiałby z powrotem zamienić na inny format :D

Pierwszy raz spotykam się z tym narzędziem backpack, więc nic mądrego nie mogę powiedzieć. Ogólnie z tego co patrzę na npm (https://www.npmjs.com/package/backpack-core) to jest mało popularny i raczej trudno znaleźć jakieś sensowne tematy na jego temat, więc jeśli dość niedawno go zainstalowałeś to ja bym zamienił na coś innego.

0

Bezpośrednio w przeglądarce cjs nie przejdzie, więc ktoś musiałby z powrotem zamienić na inny format :D

To akurat backend i chodzi mi o użycie module.exports, bo rozszerzenia przecież nie trzeba zmieniać.

Niestety ten backpack to noname i jest od dawna, więc teraz nie zmienię :/ No, ale babel powinien to ogarnąć przecież chyba od tego jest.
Ogarnąłem tego babela, nie wiem, czy dobrze, ale teraz jest co innego.

screenshot-20221125125821.png

0

Odtworzyłem problem na minimalnym repo bez śmieci - https://github.com/szafran98/workspace-test

Teraz na githubie dodali, że można odpalić repo w VSC web, więc jeśli ktoś jest tak miły i chciałby sprawić, żebym wstał jutro z uśmiechem na ustach, wspominając użytkownika, który mi pomógł, to będę bardzo wdzięczny. W /application/server komenda npm run dev.

Z uszanowaniem,
szafran98

1 użytkowników online, w tym zalogowanych: 0, gości: 1