Webpack4基本打包(一)-----------webapck4打包js,html,css,image

要实现wepack打包,首先安装一以下内容

npm install webpack -g

指定版本npm install webpack@1.15.0 -g

npm install webpack-cli -g

npm install webpack-dev-server -g

安装webpack-cli是webpack4独有的。

打包步骤

1.首先创建3个文件夹 mkdir dist src config

2.git初始化文件夹,便于后期传到github,git init

3.然后初始化生成package.json,使用cnpm init -y(-y是按照默认的模式安装)

在webpack4中可以实现简易打包

例子:

在src文件夹中创建index.js,dist文件夹中创建index.html,切入文件夹,可以使用cd .>index.js创建文件,在mac.linux使用touch index.js

使用code .使用vscode打开文件 

webpack --mode=develpoment

webpack --mode=prodution

这就是webpack的简易打包方式,但是加载css需要webpack.dev.js这个文件,所以所还是得使用之前的打包方式config.dev.js配置文件控制

先看打包文件目录,将main.js打包,然后index.html引用这个打包文件

这样只适用于只有js文件需要打包,但是一般线上环境需要打包js,css,html,image文件,那么就需要继续像之前那样配置config

配置webpack.dev.js

const path = require("path");
module.exports = {
    //入口文件
    entry: {
        main: "./src/main.js"//路径是以webpack根目录
    },
    mode: "production",//配置生产环境或者开发环境
    output: {
        filename: "[name]-bundle.js",
        path: path.resolve(__dirname, "../dist"),//使用绝对路径作为相对路径配置路径
        // publicPath: "/"
    },
    devServer: {
        contentBase: "dist"//用于配置刚进入服务器,就显示的页面
    }
}

入口文件可以有多个entry:{main:[./src/main.js,"./src/index.js"]},出口文件只能有一个,必须指定开发环境还是生产环境,在output中使用publicPath:"/",作用是作为一个引入放入公共路径。出口文件filename指定的时候【name】意思是指定使用入口文件main为名字输出,这个entry的main可以顺便取名字的

 

配置好后,开始打包。

webpack --config=config/webpack.dev.js

webpack-dev-server --config=config/webpack.dev.js

需要注意的是路径上面的内容必须使用引号包裹起来,并且使用了webpack-dev-server后,只要不更改配置文件,随时都是可以热更新的。

这就将src/main.js打包成main-buddle.js,并且被index.html引用了。

在输出文件里面配置publicPath就可以直接在index.html使用。

 <script src="/mains-bundle.js"></script>

这样配置直接打开index.html是看不到效果的,这样应该是publicPath是本地服务器的问题,必须运行本地服务器命令才使用公共路径/

下面打包css,html请看

在main.js引用创建的css文件,这样打包main.js,直接将css一起打包进来了

在main.js里面使用require("main.css"),然后webpack打包

这就出现问题了,webpack只能识别js文件,webpack无法识别css,那就必须要一个loader加载器来帮忙加载,那么我们安装吧

cnpm install css-loader style-loader

css-loader是通过import导入文件,style-loader是通过style标签的形式导入css文件,好了,style是将样式写入html文件里面去,css-loader是将样式写入到打包文件里面去,可以在config里面配置了

module: {

rules: [{

test: /\.css$/,

use: [{

loader: "style-loader"

},

{

loader: "css-loader"

}

]

}]

}

并且在devServer里面加一个overlay:true属性,那么就可以热更新在内容,这样css就算打包成功了。

最后我们来设置一个东西,因为每次打包太长的命令,我们来修改下package.json

将scripts里面的内容覆盖成这样就ok。

下面一节我们讲解打包html和image

和css有点相似,但是所有的HTML文件都要放在src里面了,dist打包出来只有main-bunddle.js和打包html文件,那么安装三个加载器html-loader由于加载html,extract-loader用处是为了output出口文件只有一个,用这个加载器将输出的html和main.js分开。

file-loader就是输出的html改名的问题

安装好loader后,同理在webpack.dev.js里面引用,也是在rules里面

记得先在打包的js文件里面引入require(".html"),像css一样,因为webpack只打包js文件,其余的文件都是需要引入的。

{

test: /\.html$/,

use: [{

loader: "file-loader",

options: {

name: "[name].html"

}

},

{

//用来区别打包的js和html分开

loader: "extract-loader"

},

{

loader: "html-loader",

options: {

attrs: ["img:src"]

}

}

]

},

配置好打包即可

下面就是配置image的打包,使用的loader就是file-loader

{

test: /\.(jpg|git|png)$/,

use: [{

loader: "file-loader",

options: {

name: "images/[name]-[hash:8].[ext]"

}

}]

}

刚刚上面的html-loader,options内容用于name标注要扫描哪些内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值