webpack 打包第三方库_请问webpack4怎么打包第三方类库?

const path = require('path');

const VueLoaderPlugin = require('vue-loader/lib/plugin');

const isDev = process.env.NODE_ENV === 'development'; /*package.json里面的dev判断*/

const HTMLPlugin = require('html-webpack-plugin');

const webpack = require('webpack');

//css分离打包 mini-css-extract-plugin  extract-text-webpack-plugin@next

const ExtractPlugin = require('extract-text-webpack-plugin');

const config  = {

//module.exports = {

target: 'web',

entry: path.join(__dirname,'./src/index.js'),

output: {

// filename: "bundle.js",

filename: "bundle.[hash:8].js", /*正式环境与开发环境进行区分*/

path: path.join(__dirname,'dist'),

},

module: {

rules: [

{

test:/\.vue$/,   /*使用vue-loader处理.vue文件*/

loader: 'vue-loader'

},/*{

test: /\.css$/,

use:['style-loader','css-loader'],

},*/

{

test: /\.(jpg|jpeg|png|gif|svg)$/,

use: [{

loader:'url-loader',

options: {

limit:1024,

name:'[name]-picf.[ext]'

}

}]

},{

test: /\.jsx$/,

loader: 'babel-loader'

}

]

},

/*错误提示:asset(s) 最大限制在244K。解决:修改webpack 的性能提示配置 */

performance: {

hints:'warning',   /*或者直接关闭hints:false*/

//入口起点的最大体积

maxEntrypointSize: 50000000,

//生成文件的最大体积

maxAssetSize: 30000000,

//只给出 js 文件的性能提示

assetFilter: function(assetFilename) {

return assetFilename.endsWith('.js');

}

},

plugins:[

new VueLoaderPlugin(), /*Vue-loader在15.*之后的版本的使用都是需要带有VueLoaderPlugin的,还需另外单独配置css-loader*/

new webpack.DefinePlugin({

'process.env':{

NODE_ENV : isDev?'"development"':'"production"'

}

}),

/*如果'"development"'不加引号,那么最后解析会变成process.env.NODE_ENV=development,没有development这个变量 缺少引号*/

new HTMLPlugin(),

],

};

if(isDev){

config.devtool = '#cheap-module-eval-source-map';/*在浏览器上页面可以调试,不加的话是vue,es6等的编译代码*/

config.devServer = {

port:8001,

host:'localhost',/*既可以通过localhost:8000访问到,又可以通过127.0.0.1:8000,别人也可以通过自己的ip访问到*/

overlay:{

errors:true /*有任何错误都显示到网页*/

},

hot:true /*原来修改东西 页面自动刷新  现在不刷新,只更新内容*/

/*historyFallback:{ //单页应用的映射 }*/

// open:true,/*修改文件后默认打开浏览器*/

};

config.plugins.push(

new webpack.HotModuleReplacementPlugin(),

new webpack.NoEmitOnErrorsPlugin(),

);

config.module.rules.push({

test: /\.styl/,  /*注意这里没有$结束符,这样既可以匹配styl文件,又可以匹配stylus*/

use: [

'style-loader',

'css-loader',

{

loader: "postcss-loader",

options: {

sourceMap:true,

}

},

'stylus-loader'

]

})

}else{

config.entry = {

app: path.join(__dirname,'./src/index.js'),

vendor:['vue']  /*将框架与业务代码单独打包,是浏览器尽可能久地缓存框架代码而不随着业务修改而刷新*/

};

config.output.filename = '[name].[chunkhash:8].js';

config.module.rules.push({

test: /\.styl/,

use: ExtractPlugin.extract({

fallback:'style-loader',

use:[

'css-loader',

{

loader: "postcss-loader",

options: {

sourceMap:true,

}

},

'stylus-loader'

]

})

});

config.plugins.push(

new ExtractPlugin('styles.[chunkHash:8].css'),

);

config.optimization = {

splitChunks: {

cacheGroups: {

commons: {

chunks: 'initial',

minChunks: 2, maxInitialRequests: 5,

minSize: 0

},

vendor: {

test: /node_modules/,

chunks: 'initial',

name: 'vendor',

priority: 10,

enforce: true

}

}

},

runtimeChunk: true

}

}

module.exports = config;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值