npm init -y命令,初始化包管理配置文件package.jsonsrc 源代码目录npm install jQuery -S 命令,安装jQuery-S/--save # 保存到生产环境的包
-D/--save-dev # 保存到开发环境的包
npm install 包名[@版本号] -D
# 安装webpack
npm install webpack@5.42.1 webpack-cli@4.7.2 -D
webpack.config.js配置文件module.exports = {
mode: 'development' //mode指定构建模式,development,production两种模式
}
package.josn的scripts节点下,新增dev脚本"scripts": {
"dev": "webpack" //执行npm run这样的命令
}
运行脚本会去webpack.config.json文件读取mode这个字段
在webpack.config.js配置文件中,通过entry节点指定打包的入口,通过output节点指定打包的出口
const path = require('path')
module.exports = {
entry: path.join(__dirname,'./src/index.js') //打包入口文件
output: {
path: path.join(__diirname,'./dist'), //输出文件的存放路劲
filename: 'bundle.js' //输出文件的名称
}
}
npm install webpack-dev-server@3.11.2 -D
package.json中的scripts中的dev命令脚本"scripts": {
"dev": "webpack serve"
webpack-dev-serve 会启动一个实时打包的http服务器
npm install html-webpack-plugin@5.3.2 -D
webpack.config.js配置//导入HTML插件
const HtmlPlugin = require('html-webpack-plugin')
//创建HTML插件的实例对象
const htmlPlugin = new HtmlPlugin({
template: './src/index.html', //指定原来的路径
filename: './index.html', //指定生成的文件的存放路径
})
module.exports = {
mode: 'development',
plugins: [htmlPlugin] //让插件生效
}
module.exports = {
devServer: {
open: true,
port: 80,
host: '127.0.0.1'
}
}
npm i style-loader@3.0.0 css-loader@5.2.6 -D
webpack.config.js 的module —> rules配置规则module: {
rules: [
{test: /\.css$/,use: ['style-loader','css-loader']}
]
}
其中test表示文件类型,use表示对应要调用的lader
npm i less-loader@10.0.1 less@4.1.1 -D
webpack.config.js 的module —> rules配置规则module: {
rules: [
{test: /\.less$/,use: ['style-loader','css-loader','less-loader']}
]
}
npm i url-loader@4.1.1 file-loader@6.2.0 -D 命令
webpack.config.js 的module —> rules配置规则module: {
rules: [
{test: /\.jpg|png|gif$/,use: ['url-loader?limit=22229']}
]
}
limit用来指定图片大小,单位是字节(byte)。只有<=limit大小的图片,才会被转换成base74格式图片
npm i babel-loader@8.2.2 @babel/core@7.14.6 @babel/plugin-proposal-decorators@7.14.5 -D
webpack.config.js 的module —> rules配置规则module: {
rules: [
{test: /\.js$/,use: 'babel-loader',excloude: /node_modules/}
]
}
babel.config.js的配置文件,定义Babel的配置项module.exports = {
//生命babel可用的插件
plugins: [['@babel/plugin-proposal-decorators',{legacy: true}]]
}
package.json文件中的scripts节点下,新增build命令"scripts": {
"dev": "webpack serve",
"build": "webpack --mode production" //项目发布时,运行build命令
}
--model是一个参数项,用来指定webpack的运行模式,production代表生产环境,会对打包生成的文件进行代码压缩,性能优化。通过--model指定的参数项,会覆盖webpack.config.js中的model选项
const path = require('path')
module.exports = {
entry: path.join(__dirname,'./src/index.js') //打包入口文件
output: {
path: path.join(__diirname,'./dist'), //输出文件的存放路劲
filename: 'js/bundle.js' //输出文件的名称
}
}
{test: /\.jpg|png|gif$/,use: ['url-loader?limit=22229&outputPath=images']}
npm install --save-dev clean-webpack-plugin
webpack.config.js中配置//导入构造函数,花括号代表结构赋值
const {CleanWebpackPlugin} = require('clean-webpack-plugin')
const webpackConfig = {
plugins: [
new CleanWebpackPlugin()
]
}
Source Map 就是一个信息文件,里面存着位置信息。SourceMap文件中存储着压缩混淆后的代码,所对应的转换前的位置。出错的时候,处理将工具直接显示原始代码,而不是转换后的代码,呢能够极大的方便后期的调试
开发环境下面使用
webpack.config.js中配置module.export = {
devtool: 'eval-source-map'
}
生产环境下面使用
webpack.config.js中配置module.export = {
devtool: 'nosources-source-map'
}
不推荐使用,开发环境不安全
webpack.config.js中配置module.export = {
devtool: 'source-map'
}
webpack.config.js配置module.export = {
resolve: {
alias: {
'@': path.join(__dirname,'./src/')
}
}
}
不安全`
webpack.config.js中配置module.export = {
devtool: 'source-map'
}
webpack.config.js配置module.export = {
resolve: {
alias: {
'@': path.join(__dirname,'./src/')
}
}
}