[英]React standalone bundle without react library inside
我已經創建了獨立的包,我將其包含在React App中。 App本身對加載的Extension Bundle(下一個XB)一無所知,但XB確實了解App及其在內部使用的庫。 如何使與XB一起編譯的App共享庫軟件包? 我的意思是,如果該應用程序使用React和React-dom庫進行編譯,以使XB排除使用此類庫進行編譯,而是從該應用程序中使用它們?
我放入webpack配置中以將React排除在編譯之外:
var config = {
//....
output: {
library: 'videoEditor',
libraryTarget: 'umd',
path: BUILD_PATH+"./../bundles/",
filename: '[name].bundle.js'
},
// ...
}
// .... later just extending config if compiling as standalone
config.externals = Object.assign(config.externals,{'react':'React'});
是的,這使我在退出時不帶React庫的Bundle(因此其大小從190KB減少到10KB)。 但是,如果我嘗試加載它,則會出現錯誤:
index.js?7afc:1 Uncaught ReferenceError: require is not defined
at eval (index.js?7afc:1)
at Object.<anonymous> (video-editor.bundle.js:80)
at __webpack_require__ (video-editor.bundle.js:30)
at video-editor.bundle.js:73
at video-editor.bundle.js:76
at webpackUniversalModuleDefinition (video-editor.bundle.js:9)
at video-editor.bundle.js:10
沒有外部,一切正常。
index.js?7afc:1是
import React from 'react';
import AppLayout from 'layouts/app';
import React from 'react';
里面import React from 'react';
作為module.exports = require('react');
我不明白如何使要求工作。 似乎對於全球空間是不可見的。
更新:我試圖更改任何可用選項上的libraryTarget:'umd','commonjs','this'。 結果是一樣的。
我從webpack知道commonChunkPlugin ,但是我有幾個來自不同來源的項目,它們是由不同的人編譯的。
從React v0.14.x開始,您還需要與React一起在外部中添加ReactDOM
externals: {
// Use external version of React
"react": "React",
"react-dom": "ReactDOM"
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.