美文网首页
Entry与OutPut的基本配置

Entry与OutPut的基本配置

作者: 5cc9c8608284 | 来源:发表于2022-04-12 09:47 被阅读0次

    本学习教程使用的webpack及脚手架对应的版本如下:
    "webpack": "^4.25.1",
    "webpack-cli": "^3.1.2",
    "webpack-dev-server": "^3.11.3"

    1.Entry与OutPut的基本配置

    output参考链接
    entry参考链接

    module.exports = {
        mode: 'development',
        entry: './src/index.js', //入口文件为当前目录下的src下的index.js文件
        output: {
            path: path.resolve(__dirname, 'bundle'), //__dirname:表示当前文件所在的文件目录,也就是项目根目录,打包生成的文件放在bundle目录下
            filename: 'main.js', //打包后的文件名
        },
    }
    

    这就是entry和output的最基本的配置了,但是如果我们想对入口和出口做一些更加定制化的配置,我们该怎么做呢?比如说我们想对src/index.js文件配置两次,一次生成的打包文件名为main,一次生成的打包文件名为sub,那么我们应该怎么去做呢?这个时候我们就需要修改一下我们的配置文件了,如下所示:

    module.exports = {
        mode: 'development',
        entry: {
            main: './src/index.js', //入口文件为当前目录下的src下的index.js文件
            sub: './src/index.js', //入口文件为当前目录下的src下的index.js文件
        },
        output: {
            path: path.resolve(__dirname, 'bundle'), //__dirname:表示当前文件所在的文件目录,也就是项目根目录,打包生成的文件放在bundle目录下
            filename: '[name].js', //在这里动态获取打包生成的文件打包后的文件名
        },
    }
    

    这样修改完成后,再次对代码进行打包,打包完成后,在bundle目录下就生成了两个js文件,一个main.js,另一个是sub.js.

    2.Entry与OutPut将打包生成的js文件放到cdn上

    按照上面的配置,最终打包生成的index.html文件中,会自动帮我们引入两个js文件,代码如下所示:

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8" />
        <title>Webpack App</title>
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <script defer src="main.js"></script>
        <script defer src="sub.js"></script>
      </head>
      <body></body>
    </html>
    

    如果我们需要将生成的js代码放到cdn地址上应该怎么做呢?这个时候我们就需要在output中添加一个publicPath的配置了,代码如下:

    var path = require('path'); //引入node的核心模块path,来处理路径
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    module.exports = {
        mode: 'development',
        entry: {
            main: './src/index.js', //入口文件为当前目录下的src下的index.js文件
            sub: './src/index.js', //入口文件为当前目录下的src下的index.js文件
        },
        output: {
            publicPath: 'http://cdn.com.cn',//添加一个publicPath,来表示生成的js文件所对应的cdn地址
            path: path.resolve(__dirname, 'bundle'), //__dirname:表示当前文件所在的文件目录,也就是项目根目录,打包生成的文件放在bundle目录下
            filename: '[name].js', //在这里动态获取打包生成的文件打包后的文件名
        },
        module: {
            rules: [{
                    test: /\.(jpe?g|png|gif|svg)$/,
                    use: {
                        loader: 'url-loader',
                        options: {
                            name: '[name]_[hash:6]. [ext]',
                            outputPath: 'images',
                            limit: 204800 //表示当图片的大小超过200kb时,将其打包生成图片
                        }
                    }
                },
                {
                    test: /\.css$/,
                    use: ['style-loader', 'css-loader']
                },
                {
                    test: /\.scss$/,
                    use: ['style-loader', {
                        loader: 'css-loader',
                        options: {
                            importLoaders: 2,
                            modules: true
                        }
                    }, 'sass-loader', 'postcss-loader']
                },
            ]
        },
        plugins: [new HtmlWebpackPlugin()],
    
    }
    

    再次打包代码,打包完成后,我们的index.html中webpack帮我们引入的js代码就变成了下面这样:

        <script defer src="http://cdn.com.cn/main.js"></script>
        <script defer src="http://cdn.com.cn/sub.js"></script>
    

    这就是webpack output和entry的最基本的使用了,想了解更多可以参考官网
    作业:document/guides/output management

    相关文章

      网友评论

          本文标题:Entry与OutPut的基本配置

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