我查看了其他项目,如babel或react-router,其中模块被拆分为几个包,使用lerna和yarn包。所以我尝试用不同的包来构建lerna库:
my-library
core/
src/
index.js
another-package/
src/
index.js
我希望core
中的index.js
文件仅在需要时并且仅在安装了node-module@my-library/othere-package
时才能从other-package
中调用index.js
中的方法。但我一直没有找到解决办法。使用ES5
/ES6
和WebPack
/Lerna
是否可以实现这一点?还是我采取了错误的方法?
更新10月27日
因此,经过几次测试,我能够使用带有普通HTML/JS(https://github.com/pixelduck/lerna-webpack/blob/main/a-react-app/src/client/test.html)的Aram解决方案,但该解决方案不能使用带有webpack https://github.com/pixelduck/lerna-webpack/blob/main/a-react-app/src/client/app.js的react应用程序包。
代码可在以下网址获得:https://github.com/pixelduck/lerna-webpack。
打开一个终端到my-lerna-library
并运行yarn install
yarn link:all
,这将为每个包“yarn dev”创建符号链接,这将创建bundle并监听更改
然后打开一个新终端到文件夹a-react-app
:yarn install
yarn link“my-lerna-library”
yarn link“@my-lerna-library/othere-package”
`yarn dev``
将在http://0.0.0.0:3000
上打开一个页面,您将看到未找到模块@my-lerna-library/othere-package
。
如果您打开http://0.0.0.0:5000/test.html
plainJS测试,一切看起来都很好。
问题似乎出在react应用程序的webpack端,因为在调试应用程序时,我看到核心包正在查找一个名为my_lerna_library__webpack_imported_module_3__
的库,而这个库不是webpack在加载另一个包_my_lerna_library_another_package__webpack_imported_module_2___default
时使用的库
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
/* harmony import */ var _App_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./App.css */ "./src/client/App.css");
/* harmony import */ var _App_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_App_css__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _my_lerna_library_another_package__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @my-lerna-library/another-package */ "../my-lerna-library/packages/another-package/dist/index.bundle.js");
/* harmony import */ var _my_lerna_library_another_package__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_my_lerna_library_another_package__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var my_lerna_library__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! my-lerna-library */ "../my-lerna-library/packages/core/dist/index.bundle.js");
/* harmony import */ var my_lerna_library__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(my_lerna_library__WEBPACK_IMPORTED_MODULE_3__);
在您的my-lerna-library>包中:-
(1)用以下代码替换另一个-package package.json文件
{
"name": "@my-lerna-library/another-package",
"private": true,
"version": "1.0.0",
"scripts": {
"dev": "webpack --watch --devtool inline-source-map --mode development",
"build": "webpack --mode production"
},
"dependencies": {
"@my-lerna-library/core": "1.0.0"
}
}
而且
{
"name": "@my-lerna-library/core",
"private": true,
"version": "1.0.0",
"scripts": {
"dev": "webpack --watch --devtool inline-source-map --mode development",
"build": "webpack --mode production"
}
}
"workspaces": {
"packages": [
"packages/**"
]
},
有一个简单的汇总配置,像这样。 我想用rollup来构建node_模块并将它们放入捆绑包,但我得到了一个错误,jsx出现了一个错误,似乎它无法处理jsx语法,但是如果我不在babel插件中包含node_模块,它就可以正常工作。那么,使用rollup构建节点_模块的正确方法是什么?
TypeScript1.8现在支持非类型化的JS文件。要启用此特性,只需添加编译器标志--allowJs或将“allowJs”:true添加到tsconfig.json中的compilerOptions中 通过https://blogs.msdn.microsoft.com/typescript/2016/01/28/uncasting-typescript-1-8-beta/ 我正在尝试导入re
我将转向maven多模块构建。 我的项目结构如下所示: 是一个Maven Eclipse项目,由M2E构建。 我添加了MyProject-Core/src/main/java作为Eclipse源文件夹,但由于我将父pom中的依赖项部分更改为dependencyManagement,因此我从Eclipse中得到了构建错误。手动调用mvn包仍然可以正常工作。 如何配置Eclipse以正确解决核心pom
问题内容: 我的项目中有多个模块,它们直接或可传递地相互依赖。当我构建«Project A»时,有些地方«Project D»会自动构建。 «Project D»pom片段是: 在构建«Project A»时会自动构建«Project B»,根据我的理解,应该在其中一个项目中添加某个地方作为依赖项,但是在这些项目的pom下我没有发现任何字符串引用。 知道在没有子项目出现在上游项目的情况下,还有什么
模块标记 coolie-cli 的模块构建方式应该是比较特殊的一类,与 webpack 一样,都是另辟蹊径。 webpack:依赖模块放到数组里,数组索引值就是模块 ID。 coolie-cli:依赖模块全局标记 ID(三十六进制)。 coolie-cli 可以将长长的物理路径压缩成最短的字符,达到压缩率最大化,而不是将模块直接合并。 // module1.js define(function(r
问题内容: 我在Jenkins中建立了一个大型Maven多模块构建。它是为增量构建而设置的。 触发后,它将解析所有POM并弄清楚需要构建什么。 当前已将其设置为触发SCM更改。 我想进行此构建,以便可以执行以下操作: 仍然手动启动它。当我这样做时,它的增量构建行为将像今天一样起作用。 从Subversion提交钩子触发构建 。我想知道,如果我通过出色的指令来设置提交挂钩的麻烦,那将不会导致构建过程