webpack.config.js

本文介绍了一个实际的Webpack配置案例,展示了如何使用Webpack进行模块打包、资源加载、代码压缩等操作,并利用Webpack插件实现CSS文件提取、HTML文件自动生成等功能。
var path = require('path');
var glob = require('glob');
var webpack = require('webpack');
/*
 * extract css
 * (提取css文件)
 * */
var ExtractTextPlugin = require("extract-text-webpack-plugin");
/*
 * create html
 * (创建html文件)
 * */
var HtmlWebpackPlugin = require('html-webpack-plugin');
/*
 * clean publishing directory
 * (清空发布目录)
 * */
var CleanPlugin = require('clean-webpack-plugin');
var CopyWebpackPlugin = require('copy-webpack-plugin');

//webpack --config 文件名.js -w        /*执行另一个配置文件*/
var config = {
	entry: {
		index: './js/main.js'
	},
	output: {
		path: './build/',
		filename: 'js/[name].[chunkhash].js',
		chunkFilename: '[id].[chunkhash].js'
	},
	devServer: {
        historyApiFallback: true,
        hot: false,
        inline: true,
        grogress: true
    },
	module: {
		loaders: [
			// { test: /\.css$/, loader: 'style-loader!css-loader' },
			{test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader")},
			{test: /\.less$/, loader: 'style-loader!css-loader!less-loader'},
			{test: /\.js$/, loader:"babel",query:{presets:["es2015","stage-0","react"]}},
			{test: /\.(png|jpg)$/, loader: 'url-loader?limit=8192'},
		]
	},
	plugins: [
		new CleanPlugin(['./build/*']),
		new CopyWebpackPlugin([
			{from: './images', to: 'images'},
			{from: './less', to: 'less'},			
		]),
		// 公共CSS名字和路径
		new ExtractTextPlugin("css/[name].[chunkhash].css"),
		// 把公共文件提取出来
		new webpack.optimize.CommonsChunkPlugin({
			name: 'vendor',
			minChunks: function (module, count) {
				// any required modules inside node_modules are extracted to vendor
				return (
					module.resource &&
					/\.js$/.test(module.resource) &&
					module.resource.indexOf(
						path.join(__dirname, './node_modules')
					) === 0
				)
			}
		}),
		//压缩代码
		// new webpack.optimize.UglifyJsPlugin({
		// 	compress: {
		// 		warnings: false
		// 	}
		// }),
		new webpack.ProvidePlugin({// 全局依赖jQuery,不需要import了
			$: "jquery",
			jQuery: "jquery",
			"window.jQuery": "jquery"
		})
	]
};


module.exports = config;

var pages = Object.keys(getEntry('./*.html'));
//生成HTML模板
pages.forEach(function (pathname) {
	var conf = {
		filename: pathname + '.html', //生成的html存放路径,相对于path
		template: './' + pathname + '.html', //html模板路径
		inject: true, //允许插件修改哪些内容,包括head与body
		hash: false, //是否添加hash值
		minify: { //压缩HTML文件
			removeComments: true,//移除HTML中的注释
			collapseWhitespace: true //删除空白符与换行符
		},
		chunksSortMode: 'dependency',
		chunks: [pathname,"vendor"]
	};

	config.plugins.push(new HtmlWebpackPlugin(conf));
});

//按文件名来获取入口文件(即需要生成的模板文件数量)
function getEntry(globPath) {
	var files = glob.sync(globPath);
	var entries = {},
		entry, dirname, basename, pathname, extname;
	for (var i = 0; i < files.length; i++) {
		entry = files[i];
		dirname = path.dirname(entry);
		extname = path.extname(entry);
		basename = path.basename(entry, extname);
		pathname = path.join(dirname, basename);
		entries[pathname] = entry;
	}
	return entries;
}

<think>我们正在讨论webpack配置文件的位置和创建方法。根据之前的对话历史和引用内容,用户想知道webpack.config.js文件在哪里以及如何创建它。 回顾引用内容: - 引用[1]提到:我们可以通过配置文件webpack.config.js来配置入口和模式,这样就不需要在命令行中每次都指定。 - 引用[2]指出:webpack的配置文件是webpack.config.js,并举例说明当项目中没有index文件时,如果不配置入口会报错。 - 引用[3]展示了一个基本的webpack.config.js文件的结构,包括入口(entry)、输出(output)、加载器(module)、插件(plugins)和模式(mode)等核心配置。 用户当前的问题是:如何找到或创建webpack.config.js文件。 根据之前的回答,我们已经知道: 1. 默认位置:项目根目录(与package.json同级)。 2. 自定义位置:可以通过--config参数指定。 现在用户进一步询问如何创建这个文件。 因此,回答应包含: 1. 配置文件的位置(默认在根目录)。 2. 如何创建该文件(手动创建并写入基本配置)。 3. 基本配置示例(参考引用[3]提供的内容)。 4. 如何验证配置文件是否生效。 此外,根据引用[3]的示例,我们可以提供一个基本的配置模板。 步骤: 1. 在项目根目录创建webpack.config.js文件(如果不存在)。 2. 写入配置内容(至少包括entry、output、mode等)。 3. 在package.json的scripts中配置build命令(如"build": "webpack"),然后运行npm run build。 注意:如果用户没有指定配置文件,webpack会尝试在根目录查找webpack.config.js。 因此,回答结构如下: - 位置说明:默认在根目录。 - 创建步骤:手动创建文件并配置内容。 - 示例配置:给出一个基于引用[3]的简单配置。 - 验证方法:运行构建命令。 同时,生成相关问题: 1. 如何配置多环境(开发/生产)? 2. entry和output的作用是什么? 3. 如何解决找不到配置文件的问题? 4. Webpack 5与4在配置上的区别? 注意:引用标识要自然地放在相关内容的末尾。</think>### Webpack 配置文件的位置与创建方法 #### 1. **默认位置** Webpack 默认会在**项目根目录**(与 `package.json` 同级)查找 `webpack.config.js` 文件。这是标准配置位置,创建后可直接通过 `npx webpack` 执行打包[^1][^2]。 #### 2. **手动创建步骤** 若项目中没有配置文件,按以下步骤创建: ```bash # 进入项目根目录 cd your-project # 创建配置文件 touch webpack.config.js ``` #### 3. **基本配置模板** 参考引用[3],写入以下核心配置(需安装 `path` 模块): ```javascript const path = require("path"); module.exports = { // 入口文件(必须) entry: "./src/main.js", // 输出配置(必须) output: { path: path.resolve(__dirname, "dist"), // 输出目录 filename: "bundle.js", // 输出文件名 }, // 模式(必须) mode: "development", // 可选:development/production }; ``` > 关键说明: > - `entry`: 指定打包入口文件(如 `main.js`)[^1][^3] > - `output`: 定义输出路径和文件名(需绝对路径)[^3] > - `mode`: 设置开发/生产环境(替代 `--mode` 命令行参数)[^1] #### 4. **验证配置** 1. 在 `package.json` 中添加命令: ```json "scripts": { "build": "webpack" // 自动使用 webpack.config.js } ``` 2. 运行测试: ```bash npm run build ``` 成功后在项目根目录生成 `dist/bundle.js` 即配置生效[^2]。 #### 5. **自定义位置(可选)** 若需将配置放在其他目录(如 `config/`): 1. 创建文件 `config/webpack.custom.js` 2. 修改 `package.json`: ```json "scripts": { "build": "webpack --config config/webpack.custom.js" } ``` > **常见问题排查**: > - 报错 `Cannot find module 'path'` → 运行 `npm install path` > - 报错 `Entry module not found` → 检查 `entry` 路径是否正确 > - 无输出文件 → 确认 `output.path` 使用的是 `path.resolve()`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值