Skip to content

一、webpack开发环境基本配置

1.目录结构

src -css -imgs -js -media webpack.config.js

2.webpack.config.js配置

js
// resolve用来拼接绝对路径的方法
const { resolve } = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
    // 入口文件
    entry: './src/js/main.js',
    // 输出文件
    output: {
        // 输出文件名
        filename: 'js/built.js',
        // 输出路径
		// __dirname  nodejs的变量,代表当前文件的目录绝对路径
        path: resolve((__dirname,'build')
    },
    module: {
        rules: [
            // loader的配置
            // 处理less资源
            {
                test: /\.less$/,
				use: ['style-loader','css-loader','less-loader'],
            },
            //处理css
			{
				test: /\.css$/,
				use: ['style-loader','css-loader'],
			},
            //处理图片资源
			{
				test: /\.(jpg|png|gif)$/,
				loader: 'url-loader',
				options: {
					limit: 8*1024,
					name: '[hash:10].[ext]',
					outputPath: 'imgs'
				}
			},
            //处理html中的img标签
			{
				test: /\.html$/,
				loader: 'html-loader'
			},
            //处理其他资源
			{
				exclude: /\.(html|js|css|less|jpg|png|gif)$/,
				loader: 'file-loader',
				options: {
					name: '[hash:10].[ext]',
					outputPath: 'media'
				}
			}
        ]
    },
    plugins: [
        // html-webpack-plugin
        // 功能:默认创建一个空的html文件,自动引入打包输出的所有资源
		// 需求:需要有结构的html文件
        new HtmlWebpackPlugin({
			// 复制./src/index.html文件,并自动引入打包输出的所有资源
			template:'./src/index.html'
		})
    ],
    mode: 'development',
    devServer:{
		// 项目构建后的路径
		contentBase: resolve(__dirname,'build'),
		// 启动gzip压缩
        compress: true,
        // 端口号
        port: 3000,
        // 自动打开浏览器
        open: true
	}
}

3.编译之后目录结构

  • build
  • -imgs
  • -js
  • -media
  • -index.html
  • src
  • -css
  • -imgs
  • -js
  • -media
  • webpack.config.js

Released under the MIT License.