一、插件篇

1. 自动补全css3前缀
autoprefixer
官方是这样说的:Parse CSS and add vendor prefixes to CSS rules using values from the Can I Use website,也就是说它是一个自动检测兼容性给各个浏览器加个内核前缀的插件。
举个栗子:最新的弹性盒模型flux
实际代码:
:fullscreen a {
display: flex
}
插件自动补充后
a {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex
}
效果显而易见,我们可以更专注于css布局和美化,而不需要花过多的精力都写相同的外码而加上不同的前缀,也减少了冗余代码。
使用方法:
cnpm install --save-dev autoprefixer postcss-loader
var autoprefixer = require('autoprefixer');
module.exports={
//其他配置这里就不写了
module:{
loaders:[
{
test:/\.css$/,
//在原有基础上加上一个postcss的loader就可以了
loaders:['style-loader','css-loader','postcss-loader']
}
]
},
postcss:[autoprefixer({browsers:['last 2 versions']})]
}
2. 自动生成html插件
html-webpack-plugin
cnpm install html-webpack-plugin --save-dev
//webpack.config.js
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports={
entry:'./index.js',
output:{
path:__dirname+'/dist',
filename:'bundle.js'
}
plugins:[
new HtmlWebpackPlugin()
]
}
作用:它会在dist目录下自动生成一个index.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Webpack App</title> </head> <body> <script src="bundle.js"></script> </body> </html>
其他配置参数:
{
entry: 'index.js',
output: {
path: 'dist',
filename: 'bundle.js'
},
plugins: [
new HtmlWebpackPlugin({
title: 'My App',
filename: 'admin.html',
template:'header.html',
inject: 'body',
favicon:'./images/favico.ico',
minify:true,
hash:true,
cache:false,
showErrors:false,
"chunks": {
"head": {
"entry": "assets/head_bundle.js",
"css": [ "main.css" ]
},
xhtml:false
})
]
}
--- header.html --- <!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"/> <title><%= htmlWebpackPlugin.options.title %></title> </head> <body> </body> </html>
作用:
3. 提取样式插件
extract-text-webpack-plugin
官网是这么解释的Extract text from bundle into a file.,把额外的数据加到编译好的文件中
var ExtractTextPlugin = require("extract-text-webpack-plugin");
module.exports = {
module: {
loaders: [
{ test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader") }
]
},
plugins: [
new HtmlWebpackPlugin({
template: './src/public/index.html',
inject: 'body'
}),
new ExtractTextPlugin("[name].[hash].css")
]
}
说明:将css放到index.html的body上面
4. 拷贝资源插件
copy-webpack-plugin
官方这样解释 Copy files and directories in webpack,在webpack中拷贝文件和文件夹
cnpm install --save-dev copy-webpack-plugin
new CopyWebpackPlugin([{
from: __dirname + '/src/public'
}]),
作用:把public 里面的内容全部拷贝到编译目录
| 参数 | 作用 | 其他说明 |
|---|---|---|
| from | 定义要拷贝的源目录 | from: __dirname + '/src/public' |
| to | 定义要烤盘膛的目标目录 | from: __dirname + '/dist' |
| toType | file 或者 dir | 可选,默认是文件 |
| force | 强制覆盖先前的插件 | 可选 默认false |
| context | 不知道作用 | 可选 默认 base context 可用 specific context |
| flatten | 只拷贝文件不管文件夹 | 默认是false |
| ignore | 忽略拷贝指定的文件 | 可以用模糊匹配 |
5. 全局挂载插件
webpack.ProvidePlugin [webpack内置插件 ]
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery"
}))
new webpack.NoErrorsPlugin(),
new webpack.optimize.DedupePlugin(),
new webpack.optimize.UglifyJsPlugin(),
new webpack.optimize.CommonsChunkPlugin('common.js')
作用: 和上面5个一一对应
二、一个完整的栗子
'use strict';
// Modules
var webpack = require('webpack');
var autoprefixer = require('autoprefixer');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var CopyWebpackPlugin = require('copy-webpack-plugin');
/**
* Env
* Get npm lifecycle event to identify the environment
*/
var ENV = process.env.npm_lifecycle_event;
var isTest = ENV === 'test' || ENV === 'test-watch';
var isProd = ENV === 'build';
module.exports = function makeWebpackConfig() {
var config = {};
config.entry = isTest ? {} : {
app: './src/app/app.js'
};
config.output = isTest ? {} : {
// Absolute output directory
path: __dirname + '/dist',
publicPath: isProd ? '/' : 'http://localhost:8080/',
filename: isProd ? '[name].[hash].js' : '[name].bundle.js',
chunkFilename: isProd ? '[name].[hash].js' : '[name].bundle.js'
};
if (isTest) {
config.devtool = 'inline-source-map';
} else if (isProd) {
config.devtool = 'source-map';
} else {
config.devtool = 'eval-source-map';
}
config.module = {
preLoaders: [],
loaders: [{
test: /\.js$/,
loader: 'babel',
exclude: /node_modules/
}, {
test: /\.css/,
loader: isTest ? 'null' : ExtractTextPlugin.extract('style', 'css?sourceMap!postcss')
}, {
test: /\.(png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot)$/,
loader: 'file'
}, {
test: /\.json$/,
loader: 'json'
}, {
test: /\.scss/,
loader: 'style!css!sass'
}, {
test: /\.html$/,
loader: 'raw'
}]
};
if (isTest) {
config.module.preLoaders.push({
test: /\.js$/,
exclude: [
/node_modules/,
/\.spec\.js$/
],
loader: 'isparta-instrumenter'
})
}
config.postcss = [
autoprefixer({
browsers: ['last 2 version']
})
];
config.plugins = [];
if (!isTest) {
config.plugins.push(
new HtmlWebpackPlugin({
template: './src/public/index.html',
inject: 'body'
}),
new ExtractTextPlugin('[name].[hash].css', {disable: !isProd})
)
}
if (isProd) {
config.plugins.push(
new webpack.NoErrorsPlugin(),
new webpack.optimize.DedupePlugin(),
new webpack.optimize.UglifyJsPlugin(),
new CopyWebpackPlugin([{
from: __dirname + '/src/public'
}]),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery"
}))
}
config.devServer = {
contentBase: './src/public',
stats: 'minimal'
};
return config;
}();
三、调试技巧
if (isTest) {
config.devtool = 'inline-source-map';
}
作用: 使用source-map可以在debug的时候看到源代码,方便 查错
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# webpack
# 插件开发
# 插件
# webpack插件
# Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
# Webpack+Vue如何导入Jquery和Jquery的第三方插件
# 基于vuejs+webpack的日期选择插件
# 可选
# 自动生成
# 是这样
# 就不
# 可以用
# 会在
# 它是
# 我们可以
# 写了
# 显而易见
# 要使
# 要花
# 官网
# 源代码
# 大家多多
# 上加
# 举个
# 就可以
# 先前
# 而用
相关文章:
网站制作大概多少钱一个,做一个平台网站大概多少钱?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
建站之星后台管理:高效配置与模板优化提升用户体验
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
网站制作网站,深圳做网站哪家比较好?
建站OpenVZ教程与优化策略:配置指南与性能提升
建站之星安装后界面空白如何解决?
网站制作软件有哪些,制图软件有哪些?
家庭服务器如何搭建个人网站?
常州自助建站费用包含哪些项目?
广州商城建站系统开发成本与周期如何控制?
建站之星客服服务时间及联系方式如何?
如何在阿里云香港服务器快速搭建网站?
小型网站制作HTML,*游戏网站怎么搭建?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
如何在景安云服务器上绑定域名并配置虚拟主机?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
javascript中的try catch异常捕获机制用法分析
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
江苏网站制作公司有哪些,江苏书法考级官方网站?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
,如何利用word制作宣传手册?
如何快速查询网址的建站时间与历史轨迹?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
定制建站价位费用解析与套餐推荐全攻略
如何在宝塔面板中创建新站点?
如何高效生成建站之星成品网站源码?
建站上市公司网站建设方案与SEO优化服务定制指南
,石家庄四十八中学官网?
无锡营销型网站制作公司,无锡网选车牌流程?
怎么将XML数据可视化 D3.js加载XML
如何快速上传自定义模板至建站之星?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
如何设计高效校园网站?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
建站10G流量真的够用吗?如何应对访问高峰?
再谈Python中的字符串与字符编码(推荐)
广平建站公司哪家专业可靠?如何选择?
岳西云建站教程与模板下载_一站式快速建站系统操作指南
建站之星Pro快速搭建教程:模板选择与功能配置指南
北京制作网站的公司,北京铁路集团官方网站?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
如何彻底删除建站之星生成的Banner?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
潮流网站制作头像软件下载,适合母子的网名有哪些?
网站制作壁纸教程视频,电脑壁纸网站?
宝塔新建站点报错如何解决?
*请认真填写需求信息,我们会在24小时内与您取得联系。