webpack打包流程

webpack打包流程webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具 当 webpack 处理应用程序时 它会在内部从一个或多个入口点构建一个依赖图 dependencygr 然后将你项目中所需的每一个模块组合成一个或多个 bundles 它们均为静态资源 用于展示你的内容 1 创建一个新项目 然后执行 npminit2 全局安装 webpack 以及 webpack cilnpminstal gwebpacknpmi gwebpac

webpack :是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个 bundles,它们均为静态资源,用于展示你的内容。

1、创建一个新项目,然后执行

npm init

2 、全局安装webpack以及webpack-cil

npm install -g webpack npm install -g webpack-cil

3、将webpack安装到项目依赖,这样就可以使用本地版的webpack

npm install webpack -save-dev npm install webpack-cil -save-dev

4、创建最外层的webpack.config.js,改变默认设置

作用:是为了方便不用每次打包的时候都输入目录地址,而是直接webpack即可

const path = require('path');

const webpack = require('webpack');

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

const CopyPlugin = require('copy-webpack-plugin');

module.exports = {

mode: 'development',

entry: './src/index.js', // 指定打包入口文件

output: {

filename: 'index.js', // 指定打包输出文件名

path: path.resolve(__dirname, './public'), // 指定打包输出路径

},

module: { // 对模块的处理逻辑

rules: [ // 一系列的加载器的处理逻辑

{

test: /\.css$/, // 正则 匹配到文件后缀

use: [

'style-loader',

'css-loader',

], // 用此加载器处理匹配到的文件

exclude: [ // 排除此文件夹下的文件

path.resolve(__dirname, './node_modules')

]

}

],

},

resolve: {

extensions: ['.js', '.json', '.jsx', '.css'] // 自动补全识别后缀

},

plugins: [

new HtmlWebpackPlugin({

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

minify: {

removeAttributeQuotes: true,

},

hash: true,

}),

new webpack.EnvironmentPlugin(

{

NODE_ENV: 'development',

TEST: 'true',

}

),

new CopyPlugin({

patterns: [

{from: path.resolve(__dirname, './src/index.css'), to: path.resolve(__dirname, './public')},

],

}),

],

// 配置webpack服务

devServer: {

port: 8000, // 启动服务监听端口

host: 'localhost', // 可以通过localhost访问

open: true, // 自动打开浏览器

hot: true, // 启动热更新

},

};

5 、安装HtmlWebpackPlugin 

该插件将为你生成一个 HTML5 文件, 在 body 中使用 script 标签引入你所有 webpack 生成的 bundle。 只需添加该插件到你的 webpack 配置中

npm install --save-dev html-webpack-plugin

6、安装CopyWebpackPlugin

该插件是将需要的文件打包copy到你所需要的地方,我之所以安装此插件,是因为我打完包之后,css并没有打包成功,之后尝试了很多方式还是没有成功,只能手动执行这个将css包copy过去

官方网址:CopyWebpackPlugin | webpack 中文文档

npm install copy-webpack-plugin --save-dev // 安装

// 使用 from 和 to就是 将form地方的文件copy到to地方

const CopyPlugin = require("copy-webpack-plugin"); module.exports = { plugins: [ new CopyPlugin({ patterns: [ { from: "source", to: "dest" }, { from: "other", to: "public" }, ], }), ], }; // webpack.config.js

7、两种打包方法

webpack --mode development // 开发模式 不压缩 webpack --mode production // 生产模式 压缩

8、安装webpack-dev-server 

官方网址:DevServer | webpack 中文文档

npm install --save-dev webpack webpack-dev-server const Webpack = require('webpack'); const WebpackDevServer = require('webpack-dev-server');

9、进行打包之后,启动项目:

"scripts": { "test": "mocha", "start": "webpack-dev-server", "dev": "webpack --mode development" },// 在package.json 里面进行配置 // 然后执行 npm run start // 项目启动&热更新 npm run dev // 再次打包 npm run test // 执行测试

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232978.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 报错:“来自数据源的String类型的给定值不能转换为指定目标列的类型nvarchar。”「建议收藏」

    报错:“来自数据源的String类型的给定值不能转换为指定目标列的类型nvarchar。”「建议收藏」解决sqlserver批量插入时出现“来自数据源的String类型的给定值不能转换为指定目标列的类型nvarchar。”问题问题的原因:源的一个字段值长度超过了目标数据库字段的最大长度解决方法:扩大目标数据库对应字段的长度一般原因是源的字段会用空字符串填充,导致字符串长度很大,可以使用rtrim去除…

    2022年7月20日
    15
  • java hashcode作用_哈希函数的作用是什么

    java hashcode作用_哈希函数的作用是什么以下是关于HashCode的官方文档定义:hashcode方法返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable提供的哈希表。hashCode的常规协定是:在Java应用程序执行期间,在同一对象上多次调用hashCode方法时,必须一致地返回相同的整数,前提是对象上equals比较中所用的信息没有被修改。从某一应用

    2025年10月9日
    3
  • 选择排序、插入排序、冒泡排序python实现

    选择排序、插入排序、冒泡排序python实现

    2021年11月24日
    42
  • STM32 看门狗和嘀嗒定时器

    STM32 看门狗和嘀嗒定时器看门狗一个定时器,独立的定时器,对单片机CPU进行监控,一旦CPU的程序出现错误,或者电压过低使单片机出现任何意外情况,看门狗就会给单片机复位使单片机回到初始状态。单片机就会从错误中脱离出来。看门狗–是一个定时器,供能–计数。每隔一段时间就喂狗–计数清零,重新计时,程序出错不能喂狗,得复位。独立看门狗独立看门狗是基于一个12位的递减计数器和一个8位的预分频器。他有一个内部独立的40KHz的RC振荡器提供时钟;因为这个RC振荡器独立于主时钟,所以他可运行于停机和待机模式。它可以被当成看门狗用于在发生问

    2022年5月26日
    46
  • android terminal emulator_android自启动

    android terminal emulator_android自启动头文件:#includeprobe中//data->early_suspend.level=EARLY_SUSPEND_LEVEL_BLANK_SCREEN+1;data->early_suspend.suspend=gxx_suspend;data->early_suspend.resume=gxx_ts_resume;register_early_s

    2022年9月18日
    5
  • 小程序父子组件传参_微信小程序修改全局变量

    小程序父子组件传参_微信小程序修改全局变量点击原创或者分类虽然样式如首页一样变化,但是其父组件的最终isActive的值并未发生改变,但是样式发生改变是因为拿取的是Component>里面的properties中的tabs,你点击下去的时候一样拿取tabs数组,所以不会报错。因此子组件必须通过方法进行修改父组件中的isActive的值,方法如下:components/Tabs/Tabs.js点击事件触发父组件中自定义事件同时传递数据给父组件this.triggerEvent(“父组件自定义事件的名称”,要传递的参数)…

    2025年9月13日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号