2016-12-30 4 views
-1

Реагировать проекта
WebPack 1,14
Импорт внешних компонентов, WebPack сборки повторяющихся модулей

Вопрос:
Moda и MODB не в проекте. Это внешние компоненты.
импорт Moda в MODB
импорта Moda и MODB в index.js
WebPack построить
bundle.js имеет две одинаковые модули Moda.

каталог проекта

- вне проекта
        - активы
                    bundle.js
                    react.js
        - JS
                    entry.js
        + node_modules
           .babelrc
              index.html
              package.json
              webpack.config.js
              yarn.lock

package.json зависимостей

"dependencies": { 
    "react": "^15.2.1", 
    "react-dom": "^15.2.1", 
}, 
"devDependencies": { 
    "babel-core": "^6.10.4", 
    "babel-loader": "^6.2.4", 
    "babel-preset-es2015": "^6.9.0", 
    "babel-preset-react": "^6.11.1", 
    "babel-preset-stage-0": "^6.5.0", 
    "webpack": "^1.14.0" 
} 

webpack.config.js

var webpack = require('webpack'); 
var path = require('path'); 
module.exports = { 
entry:[ 
    './js/entry.js' 
], 
output: { 
    path: __dirname + '/assets/', 
    publicPath: "/", 
    filename: 'bundle.js' 
}, 
module: { 
    loaders:[ 
     { 
      test: /\.jsx?$/, 
      exclude: /node_modules|assets/, 
      loader: 'babel' 
     } 
    ] 
}, 
externals: { 
    "react": 'React', 
    'react-dom': 'ReactDOM' 
}, 
resolve: { 
    extensions: ['', '.js', '.jsx'], 
    alias: { 
     'component': 'E:/experiment/out-component' //import external components 
    } 
} 
}; 

.babelrc

{ 
    "presets": ["es2015","stage-0","react"] 
} 

запись.JS

import React from 'react'; 
import ReactDOM from 'react-dom'; 

import ModA from 'component/mod/ModA.js'; 
import ModB from 'component/mod/ModB.js'; 

ReactDOM.render(
    <div> 
     <h1>webpack</h1> 
     <ModA/> 
     <ModB/> 
    </div>, 
    document.querySelector('.wrapper') 
); 

каталог компонент

- вне компонент
        - мод
                    ModA.js
                    ModB.js
        + node_modules
              .babelrc
              package.json
              yarn.lock

ModA.js

const ModA =() => <div>组件A</div>; 
export default ModA; 

ModB.js

import ModA from 'component/mod/ModA.js'; 
const ModB =() => { 
    return (
     <div> 
      <h3>组件B引入组件A</h3> 
      <ModA/> 
     </div> 
    ); 
} 
export default ModB; 

CLI запустить WebPack
Получить bundle.js
Есть два же Moda в bundle.js:

First ModA PrintScreen

Second ModA PrintScreen

компоненты будут использоваться во многих проектах.
Компоненты должны быть найдены в независимом каталоге.

Как решить проблему повторения?

ответ

Смежные вопросы