webpack入门教程

一、nodejs安装:

1、根据需求下载node.js:https://nodejs.org/en/download/

2、检测本机是否安装node:

 (1)node:node -v

 (2)npm:npm -v

 (3)cnpm:cnpm -v

3、如果没有安装就点根据需求https://nodejs.org/en/download/下载nodejs

4、将下载好的node双击安装好后再执行以下操作:

  (1)node:node -v

  (2)npm:npm -v

  (3)cnpm:cnpm -v

5、安装cnpm(淘宝镜像)npm install -g cnpm --registry=https://registry.npm.taobao.org

 检测cnpm -v

二、webpack安装及相关配置

  1、安装全局:cnpm install webpack@3.4.1 -g

  安装好之后通过webpack -v 查看安装的情况

  

 2、新建一个文件夹webpackdome02作为项目文件夹

 3、初始化项目cnpm init -y 在webpackdome中生成了package.json

    

 4、在webpackdome中安装一个局部的webpack cnpm install webpack@3.4.1 -D

    

 5、webpackdome中创建两个文件夹app和public   

7、再创建三个文件index.html(public)、main.js(app)、Greeter(app)

(1)index.html代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <!-- 引入打包后的文件 -->
        <script src="bundle.js" type="text/javascript" charset="utf-8"></script>
    </body>
</html>

(2)Greener.js对应代码如下:

// 导出模块(导出这个函数);exports(导出)
module.exports=function(){
    // 创建一个节点
    let greet=document.createElement("div");
    // 给创建的节点赋值
    greet.textContent="你好!再见asasasd";
    //把创建的节点作为返回值
    return greet
}

 (3)main.js对应代码如下:

//导入Greeter.js文件
const greeter=require("./Greeter.js");
 
// 把Greeter.js文件中返回值(这里的返回值是一个节点)添加到页面上
document.querySelector("body").appendChild(greeter())

8、打包

(1)cmd:webpack  app/main.js  public/bundle.js

     app/main.js:入口文件路径

    public/bundle.js:打包后生成的文件存放路径

(2)打包成功后运行index.html

9、新建文件webpack.config.js放在根目录下并对其进行文件配置,配置如下:

module.exports = {
    entry: __dirname + "/app/main.js",
    output: {
        path: __dirname + "/public",
        filename: "bundle.js"
    }
}

  配置好之后就可以通过webpack进行打包

10、设置start快捷方式

(1)在package.json中的scripts中添加"start": "webpack",

"scripts": {
    "test": "echo "Error: no test specified" && exit 1",
    "start": "webpack",
  },

(2)cmd运行:cnpm start 就可以进行打包,不需要输入路径

 11、使用webpack构建本地服务器

(1)安装:cnpm install --save-dev webpack-dev-server@2.9.3

(2)在webpack.config.js中新增内容如下:

module.exports = {
    devtool: 'eval-soure-map',
    entry: __dirname + "/app/main.js",
    output: {
        path: __dirname + "/public",
        filename: "bundle.js"
    },
    devServer: {
        contentBase: './public',
        historyApiFallback: true,
        inline: true
    },
}

(3)在package.json中的scripts中添加 "server": "webpack-dev-server --open"

 "scripts": {
    "test": "echo "Error: no test specified" && exit 1",
    "start": "webpack",
    "server": "webpack-dev-server --open"
  },

(4)最后在cmd中运行cnpm run server就可以在浏览器中运行端口 http://localhost:8080

12、babel是一个js的编译平台

(1)安装:cnpm install --save-dev babel-core babel-loader babel-preset-env

(2)webpack.config.js配置如下:

  注:babel-core babel-loader因为版本冲突会报错,安装@babel-core可以解决问题:cnpm i @babel/core -D

module.exports = {
    devtool: 'eval-soure-map',
    entry: __dirname + "/app/main.js",
    output: {
        path: __dirname + "/public",
        filename: "bundle.js"
    },
    devServer: {
        contentBase: './public',
        historyApiFallback: true,
        inline: true
    },
    //新增
    module: {
        rules: [{
                test: /(.jsx|.js)$/,
                use: {
                    loader: "babel-loader",
                    options: {
 
                    }
                },
                exclude: /node_modules/
            },
        ]
    }
}

(3)执行该命令查看结果:npm run server

13、CSS模块

(1)安装:cnpm install --save-dev style-loader css-loader

(2)webpack.config.js配置如下:

module.exports = {
    devtool: 'eval-soure-map',
    entry: __dirname + "/app/main.js",
    output: {
        path: __dirname + "/public",
        filename: "bundle.js"
    },
    devServer: {
        contentBase: './public',
        historyApiFallback: true,
        inline: true
    },
    module: {
        rules: [{
                test: /(.jsx|.js)$/,
                use: {
                    loader: "babel-loader",
                    options: {
 
                    }
                },
                exclude: /node_modules/
            },
            //新增
            {
                test: /.css$/,
                use: [{
                        loader: "style-loader",
                    },
                    {
                        loader: "css-loader",
                    },
                ]
            }
        ]
    }
}

(3)使用css模块:在app文件中新建main.css,内容如下:

.hello{
    color: red;
}

(4) 在Greeter.js中给创建的div添加一个class类名,内容如下:

// 导出模块(导出这个函数);exports(导出)
module.exports=function(){
    // 创建一个节点
    let greet=document.createElement("div");
    // 给创建的节点赋值
    greet.textContent="你好!再见asasasd";
    //新增类名
    greet.className="hello";
    //把创建的节点作为返回值
    return greet
}

(5)在main.js中引入main.css,内容如下:

import "./main.css"//新增
 
//导入Greeter.js文件
const greeter=require("./Greeter.js");
 
// 把Greeter.js文件中返回值(这里的返回值是一个节点)添加到页面上
document.querySelector("body").appendChild(greeter())
 

(6)执行:npm run server看效果

14、删除webpack全局下删除:npm uninstall webpack -g

安装命令:install

删除命令:uninstall

原文地址:https://www.cnblogs.com/xiaozhou223/p/11773116.html