美文网首页
webpack 直接上手配置新项目

webpack 直接上手配置新项目

作者: 清汤饺子 | 来源:发表于2018-11-10 20:54 被阅读0次

    这是一个可以打包css/img/js的webpack项目。es6可以自动编译。内置简单的服务器。可以做到热加载,npm run dev可以开始。npm start可以编译。img、css文件都会打包到单独的文件夹里。dist目录不需要手动清除。

    1. 新建项目文件夹,进入该目录。cmd进入命令模式
    2. 初始化项目依赖。webpack需要npm安装插件
      npm init -y
    3. 下面json文件替换npm init新建的package.json。然后npm install。
    {
      "name": "jianshu",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "dev": "webpack-dev-server --open",
        "start": "webpack"
      },
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "babel-core": "^6.26.3",
        "babel-loader": "^7.1.5",
        "babel-preset-es2015": "^6.24.1",
        "clean-webpack-plugin": "^0.1.19",
        "css-loader": "^1.0.1",
        "file-loader": "^2.0.0",
        "html-webpack-plugin": "^4.0.0-beta.3",
        "mini-css-extract-plugin": "^0.4.4",
        "style-loader": "^0.23.1",
        "uglifyjs-webpack-plugin": "^2.0.1",
        "webpack": "^4.25.1",
        "webpack-cli": "^3.1.2",
        "webpack-dev-server": "^3.1.10",
        "webpack-merge": "^4.1.4"
      }
    }
    
    

    style-loader css-loader:css文件加载器
    file-loader:图片加载器
    clean-webpack-plugin:清理编译目录 文件夹
    webpack-dev-server:webpack-dev-server 为你提供了一个简单的 web 服务器,并且能够实时重新加载(live reloading)。
    html-webpack-plugin:虽然在 dist/ 文件夹我们已经有 index.html 这个文件,然而 HtmlWebpackPlugin 还是会默认生成 index.html 文件。这就是说,它会用新生成的 index.html 文件,把我们的原来的替换。
    babel-loader@7 babel-core :bable解析js为浏览器支持的es5标准
    babel-env-preset: 解析Es6
    babel-preset-react:解析JSX

    4.新建webpack.config.js
    CleanWebpackPlugin :可以清除编译目录,不用每次编译都加入重复的文件。
    HtmlWebpackPlugin :生成新的html文件。注意在编码目录下定义一个模板html文件。不然dist目录是不会更新的。
    MiniCssExtractPlugin:将css文件打包成独立的css文件。

    const path = require('path');
    const CleanWebpackPlugin = require('clean-webpack-plugin');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const webpack = require('webpack');
    const MiniCssExtractPlugin = require("mini-css-extract-plugin");
    
    module.exports = {
        //多入口文件
        entry: './src/main.js',
        devtool: 'inline-source-map',//调试工具
        devServer: {
            contentBase: './dist',
            //下载的webpack-dev-server,可以提供简单的服务器以上配置告知
            // webpack-dev-server,在 localhost:8080 下建立服务,将 dist 目录下的文件,作为可访问文件。
            hot: true,   //热加载
            inline: true,//实时刷新
        },
        plugins: [
            new CleanWebpackPlugin('dist/*.*', {
                root: __dirname,
                verbose: true,
                dry: false
            }),//下载的clean-webpack-plugin插件,清理 /dist 文件夹
            new HtmlWebpackPlugin({
                template: __dirname + "/src/index.html"//new 一个这个插件的实例,并传入相关的参数
            }),//生成新的index.html文件
            new webpack.NamedModulesPlugin(),
            new webpack.HotModuleReplacementPlugin(),
            new MiniCssExtractPlugin({
                filename: "css/[name].[chunkhash:8].css",
                chunkFilename: "css/[id].css"
            })
        ],
        output: {
            filename: "bundle-[hash].js",//打包后输出文件的文件名
            path: path.resolve(__dirname, 'dist/'),
            publicPath: 'dist/'
        },
        // 模块对象
        module: {
            // 规则
            rules: [
                /*{
                    // 正则匹配所有以.css结尾的文件
                    test: /\.css$/,
                    // 使用css-loader和style-loader依次对css文件进行处理
                    // 按照数组中从后往前的顺序
                    use: [ 'style-loader', 'css-loader' ]
                },*/
                {
                    test: /\.css$/,
                    use: [
                        MiniCssExtractPlugin.loader,
                        "css-loader"
                    ]
                },
                {
                    test: /\.(png|svg|jpg|gif)$/,
                    use: [
                        'file-loader?name=images/[name].[hash:6].[ext]'
                    ]
                },
                {
                    test: /\.js$/,
                    exclude: /node_modules/,
                    loader: 'babel-loader'
                }
            ]
        }
    };
    
    
    
    1. 创建这样的项目框架


      捕获.PNG

      index.html:

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
    <div class="wrap"></div>
    <div class="wrap2"></div>
    </body>
    </html>
    

    main.js

    import './js/index'
    import './js/app'
    import './css/style.css'
    

    相关文章

      网友评论

          本文标题:webpack 直接上手配置新项目

          本文链接:https://www.haomeiwen.com/subject/furtfqtx.html