中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解webpack 多入口配置

發布時間:2020-10-13 01:25:09 來源:腳本之家 閱讀:139 作者:游云 欄目:web開發

同事套搭建vue項目,個人推薦了VUE官網的vue-cil的方式,http://cn.vuejs.org/guide/application.html

順著官網的操作,我們可以本地測試起我們的項目 npm run dev,首先我們要理解webpack打包主要是針對js,查看下面生成的配置,首頁是index.html,模版用的index.html,入口文件用的mian.js

詳解webpack 多入口配置

//file build/webpack.base.conf.js
//entry 配置

module.exports = {
 entry: {
  app: './src/main.js'
 },
 //....

//file build/webpack.dev.conf.js
//html配置
  new HtmlWebpackPlugin({
   filename: 'index.html',
   template: 'index.html',
   inject: true
  })

1.上面的目錄沒辦法滿足我們多入口的要求,我們希望的是html放在一個views文件夾下面,相關業務應用的vue放在一起,對就是這個樣子的

詳解webpack 多入口配置

我們先簡單的改動下我們的配置,來適應這個項目結構,再尋找其中的規律,來完成自動配置(index.html)

//file build/webpack.base.conf.js
//entry 配置

module.exports = {
 entry: {
  'index': './src/view/index/index.js',
  'login': './src/view/login/login.js',
 },
 //....

//file build/webpack.dev.conf.js
//html配置,index我們保留了根目錄訪問路徑
  new HtmlWebpackPlugin({
   filename: 'index.html',
   template: './src/view/index/index.html',
   inject: true,
   chunks: ['index']
  }),
  new HtmlWebpackPlugin({
   filename: 'login/login.html', //http訪問路徑
   template: './src/view/login/login.html', //實際文件路徑
   inject: true,
   chunks: ['login']
  })

2.規律出來了,我們只要按照這樣的js和html的對應關系,就可以通過查找文件,來進行同一配置

var glob = require('glob')
function getEntry(globPath, pathDir) {
  var files = glob.sync(globPath);
  var entries = {},
    entry, dirname, basename, pathname, extname;

  for (var i = 0; i < files.length; i++) {
    entry = files[i];
    dirname = path.dirname(entry);
    extname = path.extname(entry);
    basename = path.basename(entry, extname);
    pathname = path.join(dirname, basename);
    pathname = pathDir ? pathname.replace(pathDir, '') : pathname;
    console.log(2, pathname, entry);
    entries[pathname] = './' + entry;
  }
  return entries;
}
//我們的key不是簡單用的上一個代碼的index,login而是用的index/index,login/login因為考慮在login目錄下面還有register
//文件路徑的\\和/跟操作系統也有關系,需要注意
var htmls = getEntry('./src/view/**/*.html', 'src\\view\\');
var entries = {};
var HtmlPlugin = [];
for (var key in htmls) {
  entries[key] = htmls[key].replace('.html', '.js')
  HtmlPlugin.push(new HtmlWebpackPlugin({
   filename: (key == 'index\\index' ? 'index.html' : key + '.html'), 
   template: htmls[key],
   inject: true,
    chunks: [key]
  }))
}

3.多入口配置就完成了,當然下面其實還有公共js提取的相關配置,如果項目里面用到了異步加載,即require.ensure,放在單獨目錄,進行匹配,按照上面的邏輯進行推理吧

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新邵县| 贵定县| 焉耆| 永济市| 承德市| 洱源县| 鹰潭市| 玉门市| 大石桥市| 韶山市| 比如县| 湘西| 绥棱县| 河南省| 双峰县| 乐昌市| 改则县| 陇西县| 图木舒克市| 怀来县| 环江| 麻栗坡县| 习水县| 资阳市| 石城县| 酉阳| 公安县| 调兵山市| 石河子市| 潼南县| 宝清县| 噶尔县| 浮梁县| 专栏| 余干县| 塘沽区| 南澳县| 民和| 玛沁县| 寻甸| 高碑店市|