了解webpack的配置

webpack

webpack可以看作是模块的打包机,把浏览器不认识的语言(scss,jsx,vue)打包成浏览器认识的语言。

具体代码可以在我个人的github上下载

https://gitee.com/new_yangjie/webpack

比如说在module文件中moduleA.js中写入这样一段代码先导出的时候用commonJs导出因为用es6的话需要下载babl-loder
在这里插入图片描述
在src下的main.js中进行引入

var moduleA = require("./module/moduleA")
console.log(moduleA)
console.log(88888888)

理论上在src下的index.html直接通过script标签引入,会在控制台上打印出moduleA导出的对象。但是这是不可以的因为浏览器不识别这些代码所以我们要借助webpack来完成模块化的打包,把他打包成浏览器识别的代码。

那么webpack到底怎么使用呢?

npm init // 先进行初始化生成package.json文件

cnpm下载webpack和webpack脚手架

cnpm install --save webpack webpack-cli

为了方便启动我们可以在package.json文件中进行script脚本的配置让其启动起来方便
在这里插入图片描述
意思是通过开发者模式进行打包,这样打包出来的代码未进行压缩
–watch是实时监听的意思通过修改main.js或者moduleA.js文件控制台也会变但是要手动刷新

webpack --mode development

意思是通过生产者模式打包,这样打包出来的代码会进行压缩

webpack --mode production

这个意思通过webpack-dev-serve会自动生成一个服务器 会进行热重载
但是还需要在vue.config.js中配置一些东西

“start”: “webpack-dev-server --mode development”,

这样通过npm run dev进行打包你肯定会失败 为什么呢?

因为入口文件不能为main.js默认不进行配置的话是index.js
你可以把main.js改成index.js这样通过npm run dev也可以完成打包。打包成功后会生成一个dist文件,里面的main.js就是打包好的文件。这样你在src文件下的index.html中引入dis里面的js一定是可以用的

那么怎么进行更改入口和出口配置呢?

我们需要在package.json同级下创建一个webpack.config,js文件进行配置
在这里插入图片描述
路径必须是绝对路径加_dirname

意思是生成的文件名字是上面入口前面的名字比如这样就会打包生成一个kerweinmain.js

filename:"[name].js",

这样我们通过npm run dev 也可以进行打包

webpack-dev-serve

上面其实提到过就是这里

“start”: “webpack-dev-server --mode development”,

那么怎么让浏览器进行热重载呢和可以在服务器访问端口号运行呢?

下载

cnpm install --save webpack-dev-server

在webpack.config.js中进行配置

在这里插入图片描述
在这里需要注意必须要在出口中加上因为devserve有一个坑就是不会生成dist文件所以我们需要创建一个虚拟路径可以访问到我们生成的文件

publicPath:"/dist/" //虚拟的路径可以访问到 我们的生成文件

devsever中也可以配置一些反向代理的东西

是否开启热重载

inline:true

这样就完成了

只需npm start就可以启动了

通过localhost:8080/index.html访问

sorcce-map

映射源代码方便调试

代码出来错误我们可以直观的找到

在这里插入图片描述

loaders配置

 module: {
        rules: [
            // loader 规则
            {
                test: /\.css$/,
                // loader: 'style-loader!css-loader' //添加对样式表的处理,内联样式
                loader: 'style-loader!css-loader!postcss-loader'
            },
            {
                test: /\.scss$/,
                // loader: 'style-loader!css-loader!sass-loader' //添加对样式表的处理,内联样式
                loader: 'style-loader!css-loader!postcss-loader!sass-loader'
            },
            {
                test: /\.js$/, //随便起的test 名字
                exclude: /node_modules/, //排除一个
                // exclude: /(node_modules|src)/, //*****排除多个怎么写???
                loader: 'babel-loader',
                query: {
                    presets: ['es2015']
                }
            },
            { test: /\.vue$/, use: 'vue-loader' } // 处理 .vue 文件的 loader
        ]    
    },
    //插件
    plugins: [
        new VueLoaderPlugin()
    ]
}

这里简单总结一下

(1) vue-loader ( vue-loader vue-template-compiler )

需要创建配置插件

    //插件
    plugins: [
        new VueLoaderPlugin()
    ]

(2) babel-loader ( ES6 => ES5 ,react) (babel-loader@7 babel-core

babel-presetes2015)

(3) css-loader,style-loader (将css 文件当成模块处理)

(4) sass-loader(scss 编译生成css文件) (安装node-sass)

(5) file-loader , url-loader (文件 copy 到目标文件夹)

(url-loader可以设置图片大小限制,当图片超过限制时,其表现行为等同于
file-loader,
而当图片不超过限制时,则会将图片以base64的形式打包进css文件,以减少
请求次
数。)

(6) post-css (处理css兼容) (postcss-loader autoprefixer postcss)

需要创建postcss.config.js进行配置

module.exports = {
    plugins: [
        require('autoprefixer')('last 100 versions' )
    //     require('autoprefixer')(
    //     	{ browsers: 
    //     		[
	// 	        	'last 10 Chrome versions',
	// 	         	'last 5 Firefox versions', 
	// 	         	'Safari >= 6', 
	// 	         	'ie> 8',
	// 	         	'iOS >= 8',
	// 	         	'Android >= 4.4'
    //      		] 
    //      	}
    //     )
    ]
}

猜你喜欢

转载自blog.csdn.net/yang939207690/article/details/104761991