loaders之 html处理

npm install --save-dev html-loader

module: {
  loaders: [
    { test: /\.html$/,use: [{loader:'html-loader'}]},
  ]
}

Babel的配置选项


Babel其实可以完全在webpack.config.js中进行配置,但是考虑到babel具有非常多的配置选项,在单一的webpack.config.js文件中进行配置往往使得这个文件显得太复杂,
因此一些开发者支持把babel的配置选项放在一个单独的名为 ".babelrc" 的配置文件中。我们现在的babel的配置并不算复杂,不过之后我们会再加一些东西,因此现在我们就提取出相关部分,
分两个配置文件进行配置(webpack会自动调用.babelrc里的babel配置选项)
2.5.1官网最新文档总结:
1.安装方法 npm install babel-loader babel-core babel-preset-env webpack --save-dev
2.所以后面的参数'由presets: ['latest']相对于的变成了presets: ['env']
3.官方并没有废弃query 也没有指明options是新参数 实际测试两种方法都可以 生成结果也一模一样
4.loader: 'babel-loader'才能被识别
5.include和exclude需要相对路径,所以include:__dirname +'./src/' 加前缀__dirname
var path=require('path');
var HtmlPlugin=require('html-webpack-plugin');
module.exports={
	entry:{
		app:'./src/app.js'
	},
	output:{
		path:path.resolve(__dirname,'dist'),
		filename:'js/[name]-[chunkhash].js'
	},
	module:{
		loaders:[
			{	
				test: /\.js$/,       
				loader: "babel-loader", 
				exclude: path.resolve(__dirname)+'./node_modules/',   //排除哪个文件不转换   
				options:{"presets":['env']}, //"presets:['es2015']"
				include:path.resolve(__dirname)+'./src'     只转换哪个文件
			}
		]	
	},
	plugins:[
		new HtmlPlugin({
			filename:'index.html',
			temlpcat:'layer.html',
			inject:'body'
		})
	]
}

css-loaders自动添加前缀

 1 npm install --save -dev autoprefixer   postcss-loader
2、在webpack.config.js的目录下 创建一个postcss.config.js的文件
//postcss.config.js文件
module.exports = {

    plugins: [

        require('autoprefixer')({

             broswers : ['last 5 versions']

        })

    ]

};var path=require('path');
var path=require('path');
var HtmlPlugin=require('html-webpack-plugin');
var webpack=require('webpack');
module.exports={
	entry:{
		app:'./src/app.js'
	},
	output:{
		path:path.resolve(__dirname,'dist'),
		filename:'js/[name]-[chunkhash].js'
	},
	module:{
		rules:[
			{	
				test: /\.js$/,
				loader: "babel-loader",   //npm install --save-dev babel-loader babel-core
				exclude: path.resolve(__dirname,'./node_modules/'),
				options:{"presets":["es2015"]}, //npm install --save-dev babel-preset-env
				include:path.resolve(__dirname)+'./src'
			},
			{
				test:/\.css$/,
				use:[
					'style-loader',
					{
						loader: 'css-loader',
						options: {importLoaders: 1 }	  //这里是处理@import引入进来的文件  如果是@import的是less文件,那么不用加
					},
					{
						loader: 'postcss-loader'      //
					}
				]
			},
			{
				test:/\.less$/,
				use:[
					{loader:'style-loader'},
					{loader:'css-loader'},
					{loader:'less-loader'},
					{loader:'postcss-loader'}   //自动补齐less文件里面的需要加浏览器前缀的
				]
			},
			{
				test:/\.html$/,
				use:[
					{loader:'html-loader'}
				]
			}
		]	
	},
	plugins:[
		new HtmlPlugin({
			filename:'index.html',
			template:'layer.html',
			inject:'body'
		}),
		new webpack.LoaderOptionsPlugin({   //浏览器加前缀 貌似可以不需要这段代码

            options: {

                postcss: [

                    require('autoprefixer')({

                        broswers: ['last 5 versions']

                    })

                ]

            }

        })

	]
}

  

import

要禁用 css-loader 解析 @import,将选项设置为false

@import url('https://fonts.googleapis.com/css?family=Roboto');

 处理less

npm install --save -dev less-loader less
{
				test:/\.less$/,
				use:[
					{loader:'style-loader'},
					{loader:'css-loader'},
					{loader:'less-loader'},
					{loader:'postcss-loader'}   //如果需要样式添加浏览器前缀
				]
			},

 处理图片

 npm install --save -dev  file-loader

           {
		test:/\.(png|jpg|gif|svg)$/i,
			use:[
				{
					loader:'file-loader?name=html-[hash:6]'
				}
			]
		}

 npm install --save -dev  url-loader

{
	test:/\.(png|jpg|gif|svg)$/i,
	use:[
		{
			loader:'url-loader?name=html-[hash:6]?limit=40000'
		}
	]
}

 url-loader实际上是file-loader上多加的一层封装。

  多了一个limit参数。小于多少K的图片会以base64的形式内联在代码中,可以减少一次http请求。  但是如果图片复用性会很高,不建议,虽然会减少一次请求,但是文件会变大,因为是内联在代码内。

多一次请求,会存在浏览器缓存中,第二次用到这个图片会很快

压缩图片 
npm install  --save -dev image-webpack-loader
{
	test:/\.(png|jpg|gif|svg)$/i,
	use:[
		{
			loader:'url-loader?name=html-[hash:6]?limit=40000'
		},
		{
			loader:'image-webpack-loader'
		}
	]
}