- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- webpack打包layui的實(shí)現過(guò)程
這篇文章主要介紹“webpack打包layui的實(shí)現過(guò)程 ”,在日常操作中,相信很多人在webpack打包layui的實(shí)現過(guò)程 問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對大家解答”webpack打包layui的實(shí)現過(guò)程 ”的疑惑有所幫助!接下來(lái),請跟著(zhù)小編一起來(lái)學(xué)習吧!
總的來(lái)說(shuō)打包webpack打包layui要解決幾個(gè)問(wèn)題:
1、解決引入layui-src報錯的問(wèn)題
2、layui插件的打包方式
3、解決打包后樣式不生效的問(wèn)題
解決上面幾個(gè)問(wèn)題,基本就能成功打包了
首先安裝layui(推薦:layui教程)
npm i layui-src
截至到我安裝時(shí)的版本是 2.3.0
包本身的一些問(wèn)題仍沒(méi)有解決,這里需要收到更正
到安裝目錄下(/node_modules/layui-src/package.json),修改package.json的main字段為"main": "dist/layui.js",
相當于給當前包指定入口文件,這個(gè)解決了之前說(shuō)的問(wèn)題1。
接下來(lái)問(wèn)題2:
也是比較最關(guān)鍵的地方,是靜態(tài)打包插件還是沿用layui自身的按需加載呢
我最終采取的是沿用ayui原有的按需加載的方式,理由無(wú)它,省事!
因為這樣我僅需要關(guān)心引入layui即可,插件無(wú)需我管理,而且還能減小打包后的文件大小,當然最大的原因還是我懶
決定怎么做之后就可以引入layui了
import 'layui-src'layui.config({ dir: '/dist/'})
后面的layui.config是全局配置,dir目錄之告訴layui它的插件的位置,這個(gè)目錄是入口文件layui.js的所在位置,這點(diǎn)需要自己理解清楚,配置錯誤就會(huì )看到瀏覽器加載諸如layer.js等插件時(shí)的404錯誤
問(wèn)題3,css的引入
import 'layui-src/src/css/layui.css'
這里是耗費我時(shí)間最久的地方,看,我這里引入的是src目錄下的layui.css不是之前的dist目錄,原因是我做了一些修改和定制
搜索url關(guān)鍵字,將文件里的諸如url(”../font/iconfont.eot?v=230“)去掉引號,改成url(../font/iconfont.eot?v=230),后續配合webpack里的url-loader
將字體文件靜態(tài)化,其他的樣式有需要的也可自己定制
這里說(shuō)下很多人都遇到的樣式不生效問(wèn)題,其實(shí)很簡(jiǎn)單,是webpack的配置問(wèn)題
css-loader默認會(huì )把css自定義樣式名哈?;?,防止重名,因此打包后的樣式名字都變了……找了半天打開(kāi)調試才發(fā)現這個(gè)問(wèn)題
解決方案有兩種,一種是在js里使用css,最后渲染會(huì )同步哈?;ㄎ也碌?,懶的驗證……),第二,不讓webpack改名字,保持原有的樣式名
果斷采取第二種,懶得折騰了,配置如下
{ loader: 'css-loader', options: { modules: true, getLocalIdent: (context, localIdentName, localName, options) = >{ return localName } }},
另外需注意css-loader和file-loader里的publicPath,這里打開(kāi)調試頁(yè)面看下會(huì )比較清楚,如果404了,就面向錯誤編程
const webpack = require('webpack')module.exports = { entry: { home: './static/js/home.js', download: './static/js/download.js', }, output: { path: __dirname + '/dist', filename: '[name].bundle.js', }, module: { rules: [ { test: /\.(otf|eot|svg|ttf|woff|woff2)$/, use: [ { loader: 'url-loader', options: { name: '[name].[ext]',// 打包后的文件名稱(chēng) outputPath: '', // 默認是dist目錄 publicPath: '../font/', // 圖片的url前面追加'../font' useRelativePath: true, // 使用相對路徑 limit: 50000 // 表示小于1K的圖片會(huì )被轉化成base64格式 } } ] }, { test: /\.(jpe?g|png|gif|svg)$/i, use: [ { loader: 'file-loader', options: { name: '[hash:3]_[name].[ext]',// 打包后的文件名稱(chēng) outputPath: '', publicPath: '../img/', useRelativePath: true } } ] }, { test: /\.css$/, use: [ { loader: 'style-loader' }, { loader: 'css-loader', options: { modules: true, getLocalIdent: (context, localIdentName, localName, options) => { return localName } } }, ] }, { test: /\.js$/, exclude: /node_modules/, use: 'babel-loader' }, ] }, plugins: [ new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery', "window.jQuery": "jquery" }) ], mode: 'development'}
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站