2017-04-24 134 views
1

我最近切換到我的項目(Angularjs 1,AdminLTE,SPA)的webpack。使用webpack複製模塊

有登錄頁面和登錄頁面後。 登錄頁,我要求的jQuery,引導,角等, 對於登錄頁面後,我要求所有的上面加數據表中,時刻等

所以我安裝我的webpack.config像

var path = require('path'); 
var webpack = require('webpack'); 

const basepath = 'resources/assets/js/angular/'; 
module.exports = { 
    module: { 
     rules: [ 
      {test: /\.js$/, exclude: /node_modules/, loader: "babel-loader"}, 
      {test: /\.css$/, loader: 'style-loader!css-loader'} 
     ], 
     noParse: [/moment-with-locales/] 
    }, 
    devtool: 'source-map', 
    entry: { 
     common: ['jquery','bootstrap', 'fastclick', 'sparklines', 'slimscroll','angular','angular-route', 'oclazyload', 'angular-translate', path.resolve(__dirname, `${basepath}../adminlte/adminlte.js`)], 
     angular: [path.resolve(__dirname, `${basepath}app.js`), path.resolve(__dirname, `${basepath}service.js`)], 
     login: path.resolve(__dirname, `${basepath}ctrl/login.js`), 
     logined: ['datatables.net', 'angular-datatables', 'moment', 'ui-select', 'angular-bootstrap-datetimepicker', path.resolve(__dirname, `${basepath}app2.js`)]    
    }, 
    output: { 
     filename: '[name].js', 
     path: path.resolve(__dirname, 'public/js') 
    }, 
    resolve: { 
     alias: { 
      jquery: "jquery/src/jquery", 
      moment: "moment/min/moment-with-locales.js" 
     } 
    }, 
    plugins: [ 
     new webpack.optimize.CommonsChunkPlugin({ 
      name: ["common"], 
      minChunks: Infinity 
     }), 
     new webpack.ProvidePlugin({ 
      moment: "moment" 
     })    
    ] 
}; 

但是上面的配置會導致生成logined.js和angular.js中的時刻代碼重複 這可能是因爲我已經在app.js中調用了angular.module()。run()中的moment 所以依賴被注射到產生的角.js

我想要的是被包含在logined.js中的時刻,我可以在任何地方使用它(用於登錄後頁面)。

登錄頁面,我會包括common.js, 和登錄頁面後,我會包括common.js加logined.js

我不知道如果我的觀念是錯誤的,我是新來的WebPack 。

謝謝

回答

0

webpack會做什麼?它會將每一樣東西都捆綁到你的webpack.config中配置的一個文件中,這樣你捆綁的每一件東西都可以在你的應用程序中使用。而不需要從webpack那裏獲得時間,讓你的應用程序處理它,它應該只捆綁一次,或者只是使用插件並從條目中刪除。