一、webpack特点:

可以使用webpack-dev-server本地开发,热更新模块化开发(import,require),打包后会干净的。
例如有10个js文件,只用了5个,那么其它文件打包上线时不会发布。
预处理(Less,Sass,ES6等),图片优化、js压缩
css3对低版本浏览器要处理,webpack能够自动处理。
可以按需加载

 

 (这些安装webpack的基本步骤代码)

1.安装webpack到全局
npm install webpack -g
npm install webpack-cli -g
webpack --version 查看版本

2.新建项目
npm init 
npm install webpack -D
npm install webpack-cli -D

3.新建源码目录src

4.新建index.js,以及测试代码

5.打包成main.js
webpack
webpack --mode=development
webpack --mode=production
webpack --mode=none
非index.js,命令
webpack src/index2.js --mode=development
webpack src/index2.js --output dist2/test.js --mode=development
指定打包index2.js 到指定位置dist2

6.http引入

7.安装http-server
npm install http-server -g
http-server dist 生成http路径
http-server dist -p 9000 -o 自定义生成路径名  (http一般很少用这里知道就行)

 

webpack目录:

 

 

          

                                    webpack开发模式与生产模式以及个插件

{
  "name": "web02",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "cross-env NODE_ENV=development webpack-dev-server --mode development --inline --progress --config build/webpack.conf.js",
  //这里是cmd开发模式的总写法   cmd编译npm run start 编译webpack.conf.js文件 打开html 热更新
    "build": "cross-env NODE_ENV=production webpack --config build/webpack.conf.js --mode production"
  //这里是生产模式的总写法  cmd编译npm run build 在dist目录下生成html 以及编译的js、css等文件 
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "clean-webpack-plugin": "^3.0.0",
    "cross-env": "^6.0.3",
    "css-loader": "^3.2.0",
    "file-loader": "^5.0.2",
    "mini-css-extract-plugin": "^0.8.0",
    "node-sass": "^4.13.0",
    "sass-loader": "^8.0.0",
    "style-loader": "^1.0.0",
    "url-loader": "^2.3.0",
    "webpack": "^4.41.2",
    "webpack-cli": "^3.3.10",
    "webpack-dev-server": "^3.9.0"
  },
  "dependencies": {
    "html-webpack-plugin": "^3.2.0",
    "jquery": "^3.4.1",
    "vue": "^2.6.10"
  }
}

 

var webpack = require(\'webpack\');
var htmlWebpackPlugin = require(\'html-webpack-plugin\');
const MiniCssExtractPlugin = require(\'mini-css-extract-plugin\');//将CSS提取为独立的文件的插件,对每个包含css的js文件都会创建一个CSS文件
//var {CleanWebpackPlugin} = require(\'clean-webpack-plugin\');//这里的删除插件前面要这样写
var path = require(\'path\');//这是nodejs的核心模块之一
var srcPath = path.resolve(__dirname,\'../src\');
var distPath = path.resolve(__dirname,\'../dist\');
//var rootPath = path.resolve(__dirname,\'..\');
//console.log(\'root\'+rootPath);

//是否开发者模式(true-->>开发模式 false-->>产品模式)
const devMode = process.env.NODE_ENV !== \'production\';
console.log(devMode);//判断是开发模式还是产品模式真假
console.log(process.env.NODE_ENV);

module.exports = {
   entry:SRC_FILE,//入口js文件,注意相对于build目录
	//entry:{  
		index:path.resolve(__dirname,\'../src/index.js\'),
		index2:path.resolve(__dirname,\'../src/index2.js\'),
	},//也可以打包编译多个js文件 html会同时引用这些js
	output:{  //输出,出口文件
		path:distPath,
		filename:\'[name].js\'
	},
	module:{//加载转换文件为模块 webpack只打包编译模块、js
		rules:[
			{
				test:/\.sass$/,
				use:[
					devMode ? \'style-loader\' : MiniCssExtractPlugin.loader,//如果是开发模式则使用style 否则创建一个css文件。
					\'css-loader\',//加载程序来处理css文件 css-loader一定要放在style后面
					\'sass-loader\'//这里的sass-loader一定要放css后面
				]
			},
			{
				test:/\.css$/,
				use:[
					devMode ? \'style-loader\' : MiniCssExtractPlugin.loader,//如果是开发模式则使用style 否则创建一个css文件。
					\'css-loader\'//加载程序来处理css文件 css-loader一定要放在style后面
				]
			},
		    {
				 test: /\.(png|svg|jpg|gif)$/,
				 loader: \'file-loader\',
				 options: {
					name: \'./images/[name].[hash].[ext]\'//图片编译后位置及名字 但要用file
				}
		    },
			{
				test : /\.(mp3|mp4)(\?.*)?$/,
				loader: \'file-loader\',
				options: {
				  name : \'./assets/[name].[ext]\'//mp3不能用hash html只会用源码的文件名
				}
			}
		]
	},
	devServer:{//开发服务器
		hot:true,//热更新
		inline:true,
		open:true,//是否自动打开默认浏览器
		contentBase:distPath,//发布目录
		port:7788,//控制端口
		host:\'0.0.0.0\',//host地址
		historyApiFallback:true,
		useLocalIp:true,//是否用自己的IP
		proxy:{
			\'/action\':\'http://127.0.0.1:8080/\'
		}
	},
	plugins:[//插件,自动生成html 参数用来配置html名
        new htmlWebpackPlugin({
			template:\'src/index.html\',
			filename:\'index.html\',
			inject:true //inject: head  引用js位置 如果type在head头部会引用不到vue.js
			//hash: true
		}),
		//new CleanWebpackPlugin()//自动删除webpack里的dist目录 没很大用处
		new MiniCssExtractPlugin({
			filename: devMode ? \'[name].css\' : \'[name].[hash].css\',//如果是生产模式则使用hash文件名
			chunkFilename: devMode ? \'[id].css\' : \'[id].[hash].css\'
		})
	]
}

 

src目录:

 

 

 

示例代码:

 

const $ = require(\'jquery\'); //这里直接拿到jquery 命名为$ 前提是要下载jquery配置
$(function(){
	$(\'#app\').text(123);
});

 

import {tt} from \'./test.js\';
import \'./index.css\';//因为css文件已经转换为moudel模块 所以 不是在html里面引用css文件
import \'./style.sass\';
import Vue from \'vue/dist/vue.js\';

import p1 from \'./images/1.jpg\';
import \'./assets/mp3_1.mp3\';
import \'./assets/mp4_1.mp4\';
console.log(p1);
tt();

  

html{ 
	background: url("./images/1.jpg");
}

 

(这里还没有添加vue组件模板来开发前端组合开发,不过基本的webpack插件、热更新以及开发模式和生产模式都齐全)

===》》  webpack vue开发:

“vue-loader”: “^15.7.2”,
“vue-style-loader”: “^4.1.2”,
“vue-template-compiler”: “^2.6.10”,

 

版权声明:本文为czk1634798848原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/czk1634798848/p/12259967.html