webpack基础配置

栏目: 编程工具 · 发布时间: 5年前

内容简介:学习了下webpack华丽花哨让人头疼的基础配置,赶紧来做个记录。 先初始化package.json,再安装个webpack和webpack-dev-server:安装完成后在根目录下建立个webpack.config.js,我们来看看基础配置项都有哪些。文件入口是src目录下的index.js,打包好的js都放入static目录下的js目录中。

学习了下webpack华丽花哨让人头疼的基础配置,赶紧来做个记录。 先初始化package.json,再安装个webpack和webpack-dev-server:

npm init -y
npm i webpack webpack-dev-server -D   //-D只在开发时使用
复制代码

安装完成后在根目录下建立个webpack.config.js,我们来看看基础配置项都有哪些。

基本配置模块

let path = require('path') //webpack遵循node规范,使用require进行引入
module.exports = {
    entry: './src/index.js', //入口
    output: {
        filename: "js/[name][hash:8].js", //给输出的js打hash号
        path: path.resolve('./static') //必须是绝对路径
    }, //出口
    devServer: {}, //开发服务器
    module: {}, //模块配置
    plugins: [], //插件配置
    mode: "development", //可以更改模式
    resolve: {}, //配置解析
}
复制代码

文件入口是src目录下的index.js,打包好的js都放入static目录下的js目录中。

在package.js中配置相关命令,到时候只需要在命令行输入npm run xxx就可以执行了。

{
...
  "scripts": {
      "test": "echo \"Error: no test specified\" && exit 1",
      "build": "webpack ",
      "start": "webpack-dev-server"
  }
 ...
}
复制代码

服务器配置

接下来给服务器进行配置。

module.exports = {
...
    devServer: {//webpack-dev-server配置
        contentBase: './dev', //运行时文件打包文件夹(不可见)
        port: 6767, //运行端口
        compress: true, //服务器压缩
        open: true, //自动打开浏览器
        hot: true //热更新}, //开发服务器
    }
...
}
复制代码

配置完成后在命令行输入npm run start就可以启动服务器。

plugins插件配置

plugins 选项用于以各种方式自定义 webpack 构建过程。webpack 附带了各种内置插件,可以通过 webpack.[plugin-name] 访问这些插件。

先将插件进行安装:

npm i html-webpack-plugin clean-webpack-plugin extract-text-webpack-plugin copy-webpack-plugin -D
复制代码
let HtmlWebpackPlugin = require('html-webpack-plugin') //html-webpack-plugin html自动引入打包的js
let CleanWebpackPlugin = require('clean-webpack-plugin') //清除旧的打包js
let webpack = require('webpack')
let ExtractTextWebpackPlugin = require('extract-text-webpack-plugin') //打包成单独css/less文件
let CopyWebpackPlugin = require('copy-webpack-plugin') //将原文件复制到打包文件夹
module.exports = {
...
plugins: [
        new CopyWebpackPlugin([
            {
                from: './src/doc', //需要复制的文件地址
                to: './' //打算复制到的地方
            }
        ]),
        new ExtractTextWebpackPlugin({
            filename: 'css/index.css', //打包后的文件
            disable: true //开发时不需要使用单独打包,可以开启disable属性
        }),
        new webpack.HotModuleReplacementPlugin(), //热更新插件
        new CleanWebpackPlugin(), //清除旧的打包js
        new HtmlWebpackPlugin({
            filename: "index.html", //生成的html名字
            template: "./src/index.html", //模板html所在位置
            title: "index", //更改html对应title
            hash: true, //给js打版本号!
            minify: { //压缩
                removeAttributeQuotes: true, //删掉属性双引号
                collapseWhitespace: true //折叠空行
            },
        }),//html-webpack-plugin html自动引入打包的js
    ], //插件配置
...
}
复制代码

如果想要查看插件的文档,可以打开地址https://www.npmjs.com/package/包名字,进行查看,例如: www.npmjs.com/package/htm…

module模块配置

要想配置处理模块的规则,我们就在module中进行配置。 先安装需要插件:

npm i extract-text-webpack-plugin css-loader style-loader postcss-loader less-loader autoprefixer -D
复制代码
let ExtractTextWebpackPlugin = require('extract-text-webpack-plugin') //打包成单独css/less文件

module.exports = {
...
    module: {
        rules: [ //从右往左解析
            {
                test: /\.css$/, use: ExtractTextWebpackPlugin.extract({
                    fallback: 'style-loader',
                    use: [
                        {loader: "css-loader"},
                        {loader: "postcss-loader"} //加前缀
                    ]
                })
            },
            {
                test: /\.less$/,
                use:ExtractTextWebpackPlugin.extract({
                    fallback: 'style-loader',
                    use: [
                        {loader: "css-loader"},
                        {loader: "postcss-loader"}, //加前缀
                        {loader: "less-loader"}
                    ]
                })
            }
        ]
    }, //模块配置
...
}
复制代码

希望给css自动加上浏览器可以识别的前缀则需要在postcss-loader中使用autoprefixer插件。postcss-loader的使用需要在根目录下建立postcss.config.js,配置如下:

module.exports = {
    plugins: [
        require('autoprefixer')
    ]
}
复制代码

重新启动服务器就会自动给css加上前缀。

如果你还想把px转换成rem,可以加上postcss-pxtorem插件:

npm i postcss-pxtorem -D
复制代码

postcss.config.js配置如下:

const pxtorem = require('postcss-pxtorem');
module.exports = {
    plugins: [
        require('autoprefixer'),
        pxtorem({
            rootValue: 32, //根元素
            unitPrecision: 5, //保留小数位
            // selectorBlackList: ['van'], // 忽略转换正则匹配项
            propList: ['*']
        })
    ]
}
复制代码

完整配置文件可以去git查看 webpack-config


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

轻量级Django

轻量级Django

茱莉亚·埃尔曼 (Julia Elman)、马克·拉温 (Mark Lavin) / 侯荣涛、吴磊 / 中国电力出版社; 第1版 / 2016-11-1 / 35.6

自Django 创建以来,各种各样的开源社区已经构建了很多Web 框架,比如JavaScript 社区创建的Angular.js 、Ember.js 和Backbone.js 之类面向前端的Web 框架,它们是现代Web 开发中的先驱。Django 从哪里入手来适应这些框架呢?我们如何将客户端MVC 框架整合成为当前的Django 基础架构? 本书讲述如何利用Django 强大的“自支持”功......一起来看看 《轻量级Django》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具