webpack的基本配置
全局:cnpm i webpack -g
局部:cnpm i webpack -D
1、在webpack中需要有出口与入口文件
指令:webpack app.js build.js
注释:打包webpack文件,入口文件app.js,打包为build.js文件
2、进入文件每个项目都需要用到指令:npm init
一路回车 + -y 代表yes
3、假设建立开发目录src文件夹
4、假设建立生产目录build文件夹
5、建立webpack配置文件config.js文件
const path = require('path') 由于webpack基于nide.js可以引入node模块
const config = {} 创建模块
module.exports = config 暴露模块
module.exports = (env)=>{ 暴露模块(函数) 可以运行指令webpack --env hello; 函数中可以接受env参数,打印env参数会在命令行显示hello
console.log(env)
return config
}
对象内配置任务:
入口 entry:‘路径’ 一般是src下的app.js文件,入口文件可以是数组,可以引入多个入口文件,运行顺序从前到后; 此种方法可用于单页面应用
出口 output:{
path:path.join(__dirname,'build'), 出口打包文件 注释:path.join()方法可以合并路径,__dirname为相对路径,即build之前最大的路径
filename:'app.js' 打包的文件名字叫做app.js 不确定名字时会打包成main.js文件
}
entry:{ 入口文件也可以设置为对象,打包不同的文件; 此种方法可用于多页面应用
       app:'./src/app.js',
		      vendor:'./src/vendor.js'
	    },
	    output:{
		      path:path.join(__dirname,'build'),
		      filename:'[name]_[hash].js'    名字为入口设置的名字;+hash值可以区别版本,只要改动文件内容,hash值必定不同
	    }
6、建立一个html文件,引入打包的文件可以测试运行
7、指令webpack --watch
监听:当改动文件后立即更新
8、在package.json中的script中可以修改指令
例子:"build":"webpack" 输入命令npm run build可以运行webpack
9、指令cnpm i html-webpack-plugin -D 开发用插件
const HtmlWebpackPlugin = require('html-webpack-plugin') 引入插件
用法:
plugins:[
new HtmlWebpackPlugin({
title:"乐蜂网", 网页的title名字
fliename:"123.html" 文件的名字
}),
new HtmlWebpackPlugin({
title:"乐蜂网", 网页的title名字
fliename:"123.html", 生成文件的名字
template:'./src/index.jade' 以路径文件为模板创建文件; 注:此时title不起作用,因为它的优先级低于模板
}),
new webpack.optimize.UglifyJsPlugin({ JS代码压缩配置
			        compress: {
				          warnings: false,
				          drop_console: false
			        }
		      })
	    ]
使用此方法会自动生成配置html,可以在实例中添加title等参数,可以生成多个实例(多页面应用)
10、指令cnpm i jade-loader -D
需先下载cnpm i jade -D 才能使用
module:{
		    rules:[
			      {
				        test:/\.jade$/,    测试jade
				        use:'jade-loader'  使用jade-loader插件
			      }
		    ]
	  },
11、webpack-dev-server
webpack相辅相成有一个server功能工具可以提供开发的热更新服务器
npm i webpack-dev-server -g 全局
npm i webpack-dev-server -D 局部
第一种启动方式:运行指令 webpack-dev-server
第二种启动方式:可以在config中配置devServer选项,在执行指令webpack就OK
devServer:{
		      port:1234,  端口号
		      contentBase:'./build',  文件位置
		      historyApiFallback: true,  更新
		      open: true,    自动打开
		      proxy:{      配置跨域,服务器代理
		      }
	    }
12、指令cnpm i url-loader html-withimg-loader -D
在webpack中专门有一些东西编译文件、处理文件,这些东西就是loader,loader使用就是在配置项中,设置modules,在modules中设置rule值为数组,在rule中放入多个匹配规则
对html文件进行编译(显示图片)
{
				    test:/\.html$/,
				    use:'html-withimg-loader'
			  }
13、指令cnpm i file-loader -D
配置图片打包:
{
				      test:/\.(png|jpe?g|svg|gif)$/,
				      use:[
					        {
						          loader:'url-loader',
						          options:{
							            limit:1000,              文件大小;超出不能打包
							            name:'images/[hash:8].[name].[ext]'    文件名字
						          }
					        }
				      ]
			    }
14、指令cnpm i css-loader style-loader -D
配置:
{
test:/\.css$/,
use:['style-loader','css-loader'] 先编译css-loader再编译style-loader
}
15、配置scss
cnpm i scss-loader -D
配置:
{
test:/\.scss$/,
use:['style-loader','css-loader','scss-loader'] 先编译scss-loader再编译css-loader再编译style-loader
}
16、指令cnpm i extract-text-webpack-plugin -D
将css、style、scss抽出来打包
引入 const ExtractTextWebpackPlugin = require('extract-text-webpack-plugin')
module:{
[
{
test:/\.css$/,
use:ExtractTextWebpackPlugin.extract({
fallback:"style-loader", 用的最后一个loader
use:"css-loader"
})
},
{
test:/\.scss$/, scss配置
use:ExtractTextWebpackPlugin.extract({
fallback:"style-loader", 用的最后一个loader
use:["css-loader","scss-loader"]
})
}
]
}
plugins:[
new ExtractTextWebpackPlugin({
fliename:'app.css', 打包的文件名字(scss、css、style)
allChunks: true
})
]
17、指令cnpm i jsx-loader -D
jsx配置:
{
test:/\.(jsx|js)/, 编译jsx或js文件
exclude:/node_modules/, 除了node_modules中的文件
use:'jsx-loader'
}
18、react配置
cnpm i react react-dom -S
19、ES6转ES5
cnpm i babel@6.23.0 -D
cnpm i babel-core@6.24.1 -D
cnpm i babel-loader@7.0.0 -D
cnpm i babel-preset-es2015@6.24.1 -D
cnpm i babel-preset-react@6.24.1 -D
前四个是ES6编译ES5;后一个是编译react的
配置文件:
{
test:/\.(jsx|js)/, 编译jsx或js文件
exclude:/node_modules/, 除了node_modules中的文件
loader:'babel-loader',
query:{
presets:['es2015','react']
}
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号