browserifyまたはwebpackのいずれかを使用して、余分なファイルなしでjavascriptを正しくシミングするにはどうすればよいですか?
react または react-redux の使用例を見てみましょう。package.json に次の構成があります。
{
"browserify": {
"transform": [
[
"babelify",
{
"presets": [
"es2015",
"react"
]
}
],
"browserify-shim"
]
},
"browserify-shim": {
"jquery": "global:$",
"react": "global:React",
"react-addons-update": "global:React.addons.update",
"react-dom": "global:ReactDOM",
},
"dependencies": {
"react": "^0.14.3",
"react-addons-update": "^0.14.7",
"react-dom": "^0.14.7",
"react-redux": "^4.4.0",
"redux": "^3.3.1",
"redux-logger": "^2.6.0",
"redux-thunk": "^1.0.3",
},
"devDependencies": {
"uglify-js": "~2.5.0",
"babel-cli": "^6.1.1",
"babel-eslint": "^5.0.0",
"babel-polyfill": "^6.5.0",
"babel-preset-es2015": "^6.0.15",
"babel-preset-react": "^6.0.15",
"babelify": "^7.2.0",
"browserify": "^13.0.0",
"browserify-shim": "~3.8.12",
"clean-css": "~3.4.6",
"eslint": "^2.2.0",
"eslint-plugin-react": "^4.1.0",
}
}
私のプロジェクトでは、react-redux を lineimport { createStore, applyMiddleware } from 'redux';
で使用し、react-redux を依存関係として追加しました。プロジェクトをコンパイルすると、約 20K 行の 1 つの JavaScript ファイルになります。
問題は、react-redux の cdnjs ( https://cdnjs.cloudflare.com/ajax/libs/react-redux/4.4.0/react-redux.js
) を使用して react-redux をシムし、それを browserify-shim 構成に追加すると、私のプロジェクトは約 2K 行しか使用せず、react-redux js ファイルだけで約 700 行しか使用しないことです (そして、プロジェクトはまだ機能しています!)。
なぜそれが起こるのですか?browserify-shim に react-redux を追加することはできませんが、コンパイル済みプロジェクトの JavaScript に 18K 行ではなく 700 行しか追加できませんか?
ここで実際に起こっている魔法とは?