溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

webPack配置教程(一步步操作)

發(fā)布時間:2020-06-27 17:18:10 來源:網(wǎng)絡(luò) 閱讀:21710 作者:沉迷學(xué)習(xí)中 欄目:web開發(fā)

一:   

      新建一個文件,例如:webpack-demo

        1.命令行:cd webpack-demo, 

           npm init (一直回車,知道輸入yes); 目錄中出現(xiàn)package.json.

        2.安裝webpack     

            npm i -D webpack

           教程中使用的是最新版本.

        webPack配置教程(一步步操作)

        package.json出現(xiàn)webpack,說明安裝成功了。node_modules中也出現(xiàn)了webpack文件夾

     webPack配置教程(一步步操作)

       3.在根目錄創(chuàng)建一個webpack.config.js文件

               創(chuàng)建完成后,打開package.json

                    在scripts對象中添加一條命令                    "名字":"執(zhí)行命令"     執(zhí)行命令---相當于在命名行輸入......

                        webPack配置教程(一步步操作)

        4 .在根目錄創(chuàng)建dist和src文件夾, 在src目錄下創(chuàng)建app.js文件夾

                在app.js文件中輸入

                        console.log("Hello Webpack");

                -dist

                -src

                在webpack.config.js添加如下代碼

        

                                                            

                                                            //當前路徑

                                                            const path = require('path');

                                                            

                                                            module.exports = {

                                                            //選擇的模式告訴webpack使用其內(nèi)置的優(yōu)化

                                                            // "production" | "development" | "none"

                                                            mode : "development",

                                                            

                                                            //入口文件

                                                            entry: "./src/app.js",

                                                            

                                                            //webpakc如何輸出的目標路徑

                                                            output: {

                                                             // 所有輸出文件的目標路徑

                                                                // 必須是絕對路徑(使用 Node.js 的 path 模塊)

                                                            path : path.resolve(__dirname,"dist"),

                                                            //輸出文件的名字

                                                            filename : 'bundle.js',

                                                            

                                                            },

                                                            }

    

        在命令行執(zhí)行 npm run start

                  

                    webPack配置教程(一步步操作)

           webpack4.0后需要安裝webpack-cli.

            選擇yes。安裝webpack-cli

    在執(zhí)行命令

        webPack配置教程(一步步操作)   打包成功。

        在dist文件目錄下出現(xiàn)了bundle.js文件.

            在dist文件夾下創(chuàng)建index.html,引入bundle.js  瀏覽器打開index.html。打開控制臺,出現(xiàn)了Hello Webpack。  


        你肯定不想每個項目都有去自己創(chuàng)建html,是不是在想有什么 插件可以把這個操作幫我自動生成。

                有的:https://github.com/jantimon/html-webpack-plugin  

           這個插件時幫助我們簡化html文件的創(chuàng)建。詳細信息可以點上面鏈接進去瀏覽。

            所以我們下一步來使用這個插件.

            安裝: npm i -D   html-webpack-plugin

            webpack有一個plugins屬性:  專門用了引入插件的。plugins :[]

            在webpack.config.js中  添加如下代碼

                                        

                                        //當前路徑

                                        const path = require('path');

                                        

                                        //簡化了HTML文件的創(chuàng)建

                                       ++ const htmlWebpackPlugin= require('html-webpack-plugin');

                                        

                                        module.exports = {

                                        //選擇的模式告訴webpack使用其內(nèi)置的優(yōu)化

                                        // "production" | "development" | "none"

                                        mode : "development",

                                        

                                        //入口文件

                                        entry: "./src/app.js",

                                        

                                        //webpakc如何輸出的目標路徑

                                        output: {

                                         // 所有輸出文件的目標路徑

                                            // 必須是絕對路徑(使用 Node.js 的 path 模塊)

                                        path : path.resolve(__dirname,"dist"),

                                        //輸出文件的名字

                                        filename : 'bundle.js',

                                        

                                        },

                                        //插件

                                        ++plugins: [

                                            new htmlWebpackPlugin()

                                        ]

                                        }


    刪除dist文件夾中的文件 ,再次執(zhí)行: npm run start

        在dist文件夾中出現(xiàn)了index.html和bundle.js 

         發(fā)現(xiàn)html文件創(chuàng)建好并且?guī)臀覀円肓薭undle.js。 是不是很開心。不會手動創(chuàng)建html,引入js了。 不慌,還有一個問題,我想在html加入一些東西

            比如    :

                        <div id="root"></div>

                        

            這種該怎么做了? 

        html-webpack-plugin有一個屬性

            template解決了這個問題.

   在webpack.config.js中  添加如下代碼

                new htmlWebpackPlugin({

                                //html文件路徑

                ++   template : './src/index.html',

                    })

        再次執(zhí)行npm run start

                       發(fā)現(xiàn)html跟你寫的模版文件一樣,但多了一個引入js的代碼.


二:      模塊規(guī)則(后面我們會使用到react的一些語法)

            安裝

                npm i -D    react    react-dom

            改寫app.js

                                        

                                import React,{Component} from "react";

                                import reactDom  from  "react-dom";

                                

                                class  App extends Component{

                                render(){

                                return (

                                <div>Hello React</div>

                                )

                                }

                                }

                                

                                reactDom.render(

                                <App></App>,

                                document.getElementById("root")

)

    執(zhí)行npm run start,發(fā)現(xiàn)報錯了。

webPack配置教程(一步步操作)

            

提示我么需要用合適的loader來解析,因為webpack不認識js中的react代碼,所有我們得需要使用一個合適的loader來讓webpack認識react代碼.


安裝:

babel-loader  : https://github.com/babel/babel-loader  

    npm i - D babel-loader

 還需安裝:

  npmi  i -D  babel-preset-react

打開webpack.config.js

            添加如下代碼:


                    //當前路徑

                    const path = require('path');

                    

                    //簡化了HTML文件的創(chuàng)建

                    const htmlWebpackPlugin= require('html-webpack-plugin');

                    

                    module.exports = {

                    //選擇的模式告訴webpack使用其內(nèi)置的優(yōu)化

                    // "production" | "development" | "none"

                    mode : "development",

                    

                    //入口文件

                    entry: "./src/app.js",

                    

                    //webpakc如何輸出的目標路徑

                    output: {

                     // 所有輸出文件的目標路徑

                        // 必須是絕對路徑(使用 Node.js 的 path 模塊)

                    path : path.resolve(__dirname,"dist"),

                    //輸出文件的名字

                    filename : 'bundle.js',

                    

                    },

                    //模塊配置

                   ++ module:{

                    //模塊規(guī)則(配置 loader、解析器等選項)

                    rules:[

                    {

                    //匹配規(guī)則

                    test :/\.js$/,

                    use  : {

                    //需要的加載器

                    loader : "babel-loader",

                    //loader 的可選項

                    options :{

                    //預(yù)先設(shè)置,參考babel的預(yù)先設(shè)置

                    presets : ['react']

                    }

                    }

                    }

                    ]

                    },

                    //插件

                    plugins: [

                        new htmlWebpackPlugin({

                        //html文件路徑

                        template : './src/index.html',

                        })

                    ]

                    }


    執(zhí)行: npm run start

    打開index.html      出現(xiàn)了hello React    解析react并且打包成功。

     現(xiàn)在需要解決一個問題:

                在app.js中添加如下代碼:


                class  App extends Component{

                

                      ++click = ()=>{

                 alert("ok");

                 }

                

                 render(){

                 return (

                 <div>

                 ++<span onClick = {this.click.bind(this)}>kkkkkk</span>

                 Hello React

                 </div>

                 )

                 }

                }

    執(zhí)行: npm run start, 

    出現(xiàn)了語法錯誤。

webPack配置教程(一步步操作)

大家可能在想我們不是用了react的presets嗎,怎么還會報錯了。讓我看看react的presets包含哪些東西。

webPack配置教程(一步步操作) 看到了吧。插件中沒有解析類屬性的。所以需要我們手動的去安裝一個能解析這種語法的插件。    

https://babeljs.cn/docs/plugins/syntax-class-properties/#top

在命令行使用: npm i -D babel-plugin-transform-class-properties  

            安裝完以后,我們要在哪里使用這個插件。

            在 use 中對象中有一個options對象的屬性。options對象中又有一個plugins屬性專門用了放入你需要的額外插件》

            代碼如下:

            

rules:[

{

//匹配規(guī)則

test :/\.js$/,

use  : {

//需要的加載器

loader : "babel-loader",

//loader 的可選項

options :{

//預(yù)先設(shè)置

presets : ['env','react'],

                                                        //插件存放的地方(引入 babel-plugin-transform-class-properties  這種類似的,只需要填上babel-plugin后面的就可以了

 ++plugins : ['transform-class-properties']

}

}

}

]

        在執(zhí)行: npm run start;

        現(xiàn)在可以正常打包完成,并且打開html也沒問題了。

我們可以把options對象中的屬性放到一個叫.babelrc的文件中,babel-loader會根據(jù).babelrc里的配置去解析代碼。

這個文件需要跟webpack.config.js同級

        在根目錄創(chuàng)建.babelrc.添加如下代碼,

    {

    

        "presets" : ["react","env"],

        "plugins" : ["transform-class-properties"]

    }

    刪除options對象;,如下


{

//匹配規(guī)則

test :/\.js$/,

use  : {

//需要的加載器

loader : "babel-loader",

}

}

        執(zhí)行: npm run start.  

現(xiàn)在有一個疑問, 引入的包需要我們?nèi)ソ馕龌蛘呦蛳录嫒輪幔?比較成熟的包,毫無疑問,是不需要的,研發(fā)人員已經(jīng)做到很好了。所以我們需要排除的引入的包和不需要要解析的包。

有一個exclude可以排除掉不需要使用當前規(guī)則中的加載器去解析的文件.


在webpack.config.js中添加如下代碼:

{

//匹配規(guī)則

test :/\.js$/,

use  : {

//需要的加載器

loader : "babel-loader",

//loader 的可選項

},

                //排除掉不需要兼容的模塊

                          ++exclude :[

                                    path.resolve(__dirname,'node_modules'),

                                ]

   }


webPack配置教程(一步步操作)webPack配置教程(一步步操作) 打包時間明顯快了很多。


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI