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


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

查看所有标签

猜你喜欢:

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

掘金大数据

掘金大数据

程新洲、朱常波、晁昆 / 机械工业出版社 / 2019-1 / 59.00元

在数据横向融合的时代,充分挖掘数据金矿及盘活数据资产,是企业发展和转型的关键所在。电信运营商以其数据特殊性,必将成为大数据领域的领航者、生力军。各行业的大数据从业者要如何从电信业的大数据中挖掘价值呢? 本书彻底揭开电信运营商数据的神秘面纱,系统介绍了大数据的发展历程,主要的数据挖掘方法,电信运营商在网络运行及业务运营方面的数据资源特征,基于用户、业务、网络、终端及内在联系的电信运营商大数据分......一起来看看 《掘金大数据》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换