webpack 靜態(tài)資源集中輸出的方法示例
目錄結(jié)構(gòu)
copy-webpack-plugin
工作中會(huì)有一些已經(jīng)存在但在項(xiàng)目中沒(méi)有引用的圖片資源或者其他靜態(tài)資源(比如設(shè)計(jì)圖、開(kāi)發(fā)文檔),這些靜態(tài)資源有可能是文檔,也有可能是一些額外的圖片。打包時(shí)保留這些靜態(tài)資源,直接打包到制定文件夾
安裝依賴
cnpm install copy-webpack-plugin --save-dev
webpack.config.js
- from:要打包的靜態(tài)資源目錄地址,這里的__dirname是指項(xiàng)目目錄下,是node的一種語(yǔ)法,可以直接定位到本機(jī)的項(xiàng)目目錄中。
- to:要打包到的文件夾路徑,跟隨output配置中的目錄。所以不需要再自己加__dirname。
const copyWebpackPlugin = require('copy-webpack-plugin'); ... plugins: [ new copyWebpackPlugin([{ from: __dirname + '/src/public', to:'./public' }]) ],
打包,運(yùn)行
npm run build npm run server
webpack.config.js全部代碼
const path = require('path'); const glob = require('glob'); const uglify = require('uglifyjs-webpack-plugin'); const htmlPlugin = require('html-webpack-plugin'); const ExtractTextPlugin = require("extract-text-webpack-plugin"); const PurifyCSSPlugin = require('purifycss-webpack'); const entry = require('./webpack_config/entry_webpack'); const webpack = require('webpack'); const copyWebpackPlugin = require('copy-webpack-plugin'); console.log(encodeURIComponent(process.env.type)); if (process.env.type == 'build') { var website = { publicPath: "http://pengrongjie.top:1717/" } } else { var website = { publicPath: "http://192.168.1.9:1717/" } } module.exports = { // devtool: 'source-map', // 入口 entry: { entry: './src/entry.js', jquery: 'jquery', vue:'vue' }, // entry:entry.path, // 出口 output: { //絕對(duì)路徑 path: path.resolve(__dirname, 'dist'), filename: '[name].js', publicPath: website.publicPath }, // 模塊 module: { //規(guī)則 rules: [ // { // test: /\.css$/, // use: [ // { // loader:'style-loader' // } // ] // }, { test: /\.css$/, use: ExtractTextPlugin.extract({ fallback: "style-loader", // use: "css-loader" use: [ { loader: 'css-loader', options: { importLoaders: 1 } }, 'postcss-loader' ] }) }, { test: /\.(png|jpg|gif)/, use: [{ loader: 'url-loader', options: { limit: 5000, outputPath: 'images/', } }] }, { test: /\.(htm|html)$/i, use: ['html-withimg-loader'] }, // { // test: /\.less$/, // use: [{ // loader: 'style-loader' // }, { // loader: 'css-loader' // }, { // loader: 'less-loader' // }] // } { test: /\.less$/, use: ExtractTextPlugin.extract({ use: [{ loader: 'css-loader', options: { importLoaders: 1 } }, { loader: 'less-loader' },'postcss-loader'], fallback: 'style-loader' }) }, // { // test: /\.scss$/, // use: [{ // loader:'style-loader' // },{ // loader:'css-loader' // },{ // loader:'sass-loader' // }] // }, { test: /\.scss$/, use: ExtractTextPlugin.extract({ use: [{ loader: 'css-loader', options: { importLoaders: 1 } }, { loader: 'sass-loader' }, 'postcss-loader'], fallback: 'style-loader' }) }, // { // test:/\.(js|jsx)$/, // use:{ // loader:'babel-loader', // options:{ // presets:[ // 'es2015', // 'react' // ] // } // }, // //過(guò)濾掉,不編譯node_modules中的文件, // exclude:/node_modules/ // }, { test:/\.(js|jsx)$/, use:{ loader:'babel-loader', }, //過(guò)濾掉,不編譯node_modules中的文件, exclude:/node_modules/ } ] }, //插件 plugins: [ // new webpack.ProvidePlugin({ // $:'jquery' // }), // new uglify() new htmlPlugin({ minify: { removeAttributeQuotes: true }, hash: true, template: './src/index.html' }), new ExtractTextPlugin("css/index.css"), new PurifyCSSPlugin({ paths:glob.sync(path.join(__dirname,'src/*.html')), }), new webpack.BannerPlugin('jie的注釋'), // new webpack.optimize.CommonsChunkPlugin({ // name: 'jquery', // filename: 'assets/js/jquery.min.js', // minChunks:2 // }) new webpack.optimize.CommonsChunkPlugin({ name: ['jquery','vue'], filename: 'assets/js/[name].js', minChunks:2 }), new copyWebpackPlugin([{ from: __dirname + '/src/public', to:'./public' }]) ], //開(kāi)發(fā)服務(wù) devServer: { contentBase: path.resolve(__dirname, 'dist'), host: '192.168.1.9', compress: true, //服務(wù)端是否啟用壓縮 port: 1717 }, watchOptions: { //檢測(cè)修改的時(shí)間,以毫秒為單位 poll: 1000, //防止重復(fù)保存而發(fā)生重復(fù)編譯錯(cuò)誤。這里設(shè)置的500是半秒內(nèi)重復(fù)保存,不進(jìn)行打包操作 aggregateTimeout: 500, //不監(jiān)聽(tīng)的目錄 ignored:/node_modules/ } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Webpack常見(jiàn)靜態(tài)資源處理-模塊加載器(Loaders)+ExtractTextPlugin插件
- 詳解vue-cli與webpack結(jié)合如何處理靜態(tài)資源
- vue-cli與webpack處理靜態(tài)資源的方法及webpack打包的坑
- vue填坑之webpack run build 靜態(tài)資源找不到的解決方法
- 淺談webpack4 圖片處理匯總
- 淺談 Webpack 如何處理圖片(開(kāi)發(fā)、打包、優(yōu)化)
- 在Webpack中用url-loader處理圖片和字體的問(wèn)題
- webpack實(shí)現(xiàn)靜態(tài)資源緩存的方法
- vue項(xiàng)目之webpack打包靜態(tài)資源路徑不準(zhǔn)確的問(wèn)題
- webpack5處理圖片、圖標(biāo)字體、多媒體等靜態(tài)資源文件
相關(guān)文章
JavaScript實(shí)現(xiàn)動(dòng)態(tài)表單生成
這篇文章主要來(lái)和大家一起深入探討如何使用JavaScript實(shí)現(xiàn)一個(gè)動(dòng)態(tài)表單生成器,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下2024-01-01js字符串類(lèi)型String常用操作實(shí)例總結(jié)
這篇文章主要介紹了js字符串類(lèi)型String常用操作,結(jié)合實(shí)例形式總結(jié)分析了javascript字符串類(lèi)型String常用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-07-07easyui tree帶checkbox實(shí)現(xiàn)單選的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇easyui tree帶checkbox實(shí)現(xiàn)單選的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11request請(qǐng)求獲取參數(shù)的實(shí)現(xiàn)方法(post和get兩種方式)
下面小編就為大家?guī)?lái)一篇request請(qǐng)求獲取參數(shù)的實(shí)現(xiàn)方法(post和get兩種方式)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09JS加密插件CryptoJS實(shí)現(xiàn)的Base64加密示例
這篇文章主要介紹了JS加密插件CryptoJS實(shí)現(xiàn)的Base64加密,結(jié)合實(shí)例形式分析了CryptoJS進(jìn)行base64加密的簡(jiǎn)單實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-08-08JavaScript實(shí)現(xiàn)拖動(dòng)滑塊拼圖驗(yàn)證功能(html5、canvas)
這篇文章主要介紹了JavaScript實(shí)現(xiàn)拖動(dòng)滑塊拼圖驗(yàn)證(html5、canvas),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03簡(jiǎn)單聊聊JavaScript的事件循環(huán)機(jī)制
前端開(kāi)發(fā)的童鞋應(yīng)該都知道,JavaScript是一門(mén)單線程的腳本語(yǔ)言,這就意味著JavaScript 代碼在執(zhí)行的時(shí)候,只有一個(gè)主線程來(lái)執(zhí)行所有的任務(wù),同一個(gè)時(shí)間只能做同一件事情,這篇文章主要給大家介紹了關(guān)于JavaScript事件循環(huán)機(jī)制的相關(guān)資料,需要的朋友可以參考下2022-03-03