我想找出在monorepo中开发的最佳便捷方法。
想象一下以下情况:
结构如下:
.
└── packages
├── a
│ ├── lib
│ └── src
├── b
│ ├── lib
│ └── src
└── ui
├── index.js
└── src
所有软件包的源代码都在es模块中编写。但是在发布之前,应通过babel将代码转换为commonjs。(例如,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
在开发环境时也许有什么办法,要求a
指向源代码条目,在生产环境时,它指向转换后的条目?
// 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();