Я хочу найти лучший и удобный способ развития в монорепо.
Представьте себе следующий сценарий:
структура выглядит следующим образом:
.
└── packages
├── a
│ ├── lib
│ └── src
├── b
│ ├── lib
│ └── src
└── ui
├── index.js
└── src
исходный код всех пакетов написан в модуле es. но перед публикацией sh код должен быть преобразован в общий js с помощью babel (например, main
свойство в package.json
должно быть lib/index.js
)
Вопрос в том, что если ui
зависит от a
, а a
зависит от b
. Когда я начинаю развиваться с ui
, a
должен быть преобразован. При начале разработки с a
необходимо преобразовать b
..
Например:
// module `ui`
import { foo } from 'a';
foo();
// module `a`
import { bar } from 'b';
export const foo = bar;
// module `b`
export function bar() {}
# now i want to start ui
$ cd packages/b && npm run babel:watch
$ cd packages/a && npm run babel:watch
$ cd packages/ui && npm run start-dev-server
То, что я хочу, это просто
$ cd packages/ui && npm run start-dev-server
Может быть, есть ли способ, когда env находится в разработке, требовать a
указывает на ввод исходного кода, когда env находится в производстве, он указывает на преобразованный ввод?
// module `ui`
// process.env.NODE_ENV === 'development'
// entry is `packages/a/src/index.js`
// process.env.NODE_ENV === 'production'
// entry is `packages/a/lib/index.js`
// btw. it must be also work
// import foz from 'a/foz';
import { foo } from 'a';
foo();