这是react-hot-loader
DOC所说的:
https://www.npmjs.com/package/react-hot-loader
注意:您可以安全地将react-hot-loader作为常规依赖项而不是dev依赖项进行安装,因为它自动确保它不会在生产中执行并且占用空间很小。
尽管如此。我的目标是:
- 我想从生产包中删除
react-hot-loader
。 - 我还想要一个
App.js
文件。这应该适用于DEV和PROD。
与react-hot-loader
相关的唯一命令是在我的App.js
文件中:
App.js
import { hot } from 'react-hot-loader/root';
import React from 'react';
import Layout from './Layout/Layout';
function App() {
console.log('Rendering App...');
return(
<Layout/>
);
}
export default process.env = hot(App);
如果我像这样运行它,我将在app.js
已转译和捆绑的文件中以以下行结尾:
/ * WEBPACK VAR注入 /(function(process){/ 和声导入 / var react_hot_loader_root__WEBPACK_IMPORTED_MODULE_0__ = webpack_require (/ !react-hot -loader / root * /“ wSuE”);
这是预期的。
但是如果我将App.js文件更改为:
AppV2.js
import { hot } from 'react-hot-loader/root'; // KEEPING THE IMPORT
import React from 'react';
import Layout from './Layout/Layout';
function App() {
console.log('Rendering App...');
console.log(window);
return(
<Layout/>
);
}
// export default hot(App); <--- COMMENTED OUT THE hot() LINE
export default App;
然后将此行添加到我的webpack.config.js
webpack.config.js
plugins:[
new webpack.IgnorePlugin(/react-hot-loader/)
]
最后我将得到一个新的已编译app.js
文件,其内容如下:
***!(函数webpackMissingModule(){var e = new Error(“ Cannot find module'react-hot-loader / root'”); e.code ='MODULE_NOT_FOUND'; throw e;}()) ;
注意:上面一行中的第一个'***'字符实际上并不存在。我必须将它们添加到中!引号中显示的切除标记。不知道为什么,但是您不能以感叹号开头的报价。
问题
IgnorePlugin是否应该完全忽略react-hot-loader
软件包?为什么将其标记为丢失?看到它甚至没有在代码上使用(因为我已经注释掉hot()
调用)。