Reactjs 将Webpack HMR与提升的Lerna React项目一起使用
是否可以将网页包热模块更换(HMR)与吊装的Lerna React项目一起使用 这是因为每个Lerna React包(参见下面的示例)都是独立构建的,当在主项目(例如p3)上启动webpack开发服务器时,它只能看到自己的更改(我的意思是仅p3更改),而不能看到monorepo的其他包中的依赖项(p1或p2)更改Reactjs 将Webpack HMR与提升的Lerna React项目一起使用,reactjs,webpack,webpack-dev-server,lerna,webpack-hmr,Reactjs,Webpack,Webpack Dev Server,Lerna,Webpack Hmr,是否可以将网页包热模块更换(HMR)与吊装的Lerna React项目一起使用 这是因为每个Lerna React包(参见下面的示例)都是独立构建的,当在主项目(例如p3)上启动webpack开发服务器时,它只能看到自己的更改(我的意思是仅p3更改),而不能看到monorepo的其他包中的依赖项(p1或p2)更改 some_lerna_project /node_modules /packages /p1 /src
some_lerna_project
/node_modules
/packages
/p1
/src
package.json
/p2
/src
package.json
/p3
/src
package.json
webpack.confing.js
lenra.json
如果是,请提供一个配置示例?您需要这些包成为传输文件的一部分
//webpack.config.js
const path=require('path');
常量路径分隔符=“[\\/]”;//匹配2个反斜杠或一个斜杠
const safePath=(module)=>module.split(/[\\\/]/g).join(路径分隔符);
const generateIncludes=(模块)=>{
返回[
新的RegExp(`(${modules.map(safePath.join(“|”)})$`),
新正则表达式(
`(${modules.map(safePath.join(“|”)${PATH\u DELIMITER}(?。*node\u模块)`
),
];
};
const transpileModules=[“@my scope/p1”,“@my scope/p2”];//使用作用域包
module.exports={
模式:“发展”,
条目:{
应用程序:“./src/index.js”,
打印:“./src/print.js”,
},
模块:{
规则:[
{
测试:/\.m?js$/,,
排除:/(节点\模块)/,
使用:{
加载器:“巴别塔加载器”,
选项:{
预设:[“@babel/preset env”],
},
},
},
{
测试:/\.m?js$/,,
包括:生成包括(传输模块),
使用:{
加载器:“巴别塔加载器”,
选项:{
//使用您喜欢的babel配置
预设:[“@babel/preset env”],
},
},
},
],
},
决心:{
symlinks:false,//避免使用Webpack将传输模块路径解析为其实际路径
},
输出:{
文件名:“[name].bundle.js”,
path:path.resolve(_dirname,“dist”),
},
};
此代码基于此,使Next.js项目能够传输mono repo包。您需要这些包成为传输文件的一部分
//webpack.config.js
const path=require('path');
常量路径分隔符=“[\\/]”;//匹配2个反斜杠或一个斜杠
const safePath=(module)=>module.split(/[\\\/]/g).join(路径分隔符);
const generateIncludes=(模块)=>{
返回[
新的RegExp(`(${modules.map(safePath.join(“|”)})$`),
新正则表达式(
`(${modules.map(safePath.join(“|”)${PATH\u DELIMITER}(?。*node\u模块)`
),
];
};
const transpileModules=[“@my scope/p1”,“@my scope/p2”];//使用作用域包
module.exports={
模式:“发展”,
条目:{
应用程序:“./src/index.js”,
打印:“./src/print.js”,
},
模块:{
规则:[
{
测试:/\.m?js$/,,
排除:/(节点\模块)/,
使用:{
加载器:“巴别塔加载器”,
选项:{
预设:[“@babel/preset env”],
},
},
},
{
测试:/\.m?js$/,,
包括:生成包括(传输模块),
使用:{
加载器:“巴别塔加载器”,
选项:{
//使用您喜欢的babel配置
预设:[“@babel/preset env”],
},
},
},
],
},
决心:{
symlinks:false,//避免使用Webpack将传输模块路径解析为其实际路径
},
输出:{
文件名:“[name].bundle.js”,
path:path.resolve(_dirname,“dist”),
},
};
这段代码基于它,它使Next.js项目能够传输mono repo包