博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack的简单实例学习
阅读量:6445 次
发布时间:2019-06-23

本文共 4485 字,大约阅读时间需要 14 分钟。

webpack工具的使用
webpack文档:

一、实现js打包

1.1、创建项目testwebpack

// 在文件夹 testwebpack// 初始化 package.jsonnpm init// 安装项目依赖 node_modulesnpm install webpack --save-dev

1.2、创建文件夹app 和 build

      app:放源代码
      build: 编译之后的输出路径
    1.2.1、app文件夹内创建 app.js和hello.js
        代码编写遵循 nodejs的 commonjs 规范

// app.js// exports 导出创建的标签 hellomodule.exports = function(){    var hello = document.createElement("div");    hello.textContent = 'hello webpack';    return hello;}// build.js// require 引入var hello = require("./hello.js");// 将标签放到root中document.getElementById("root").appendChild(hello());

    1.2.2、build文件夹内创建 index.html

    

1.3、使用 webpack进行编译,将app文件中源代码编译到build文件中

// webpack 版本4 和 webpack 版本2 的写法不一样。主要注意// webpack2 app/app.js  是要编译的文件  build/bundle.js 是要输出文件 // webpack app/app.js build/bundle.js// webpack4  npx webpack app/app.js --output-filename build/bundle.js --output-path . --mode development

编译时可能出现报错:

1、报错webpack不是内部命令--需要全局安装webpack & webpack-clinpm install webpack -gnpm install webpack-cli -g2、报错WARNING in configurationThe 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaultsfor each environment.You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/concepts/mode/ERROR in multi ./app/app.js build/bundle.jsModule not found: Error: Can't resolve 'build/bundle.js' in 'E:\test\1webpack' @ multi ./app/app.js build/bundle.js main[1]--查看安装webpack的版本,我安装的版本4,执行了webpack2的编译方法。需要执行webpack4的编译方法,不然会出错。

1.4、编译完成后会在build文件中生成bundled.js文件

引入到index.html 中就可以用了。

1.5、在根目录中创建配置文件webpack.config.js

// webpack.config.jsconst path = require('path');// 引入 Node.js 的 path模块module.exports = {        entry:"./app/app.js",    // 入口    // webpack 开始打包    output:{        // webpack 如何输出结果的相关选项        path: path.resolve(__dirname, "build"),        // 所有输出文件的目标路径        // 必须是绝对路径(使用 Node.js 的 path模块)        filename: "bundle.js"        // 输出名字    },        devtool:"eval-source-map"    // 配置报错内容}// __dirname 是nodejs中的方法,用来获取当前路径。// 执行命令 webpack 直接打包
// 如果不加 __dirname 会报错Insufficient number of arguments or no entry found.Alternatively, run 'webpack(-cli) --help' for usage info.

1.6、配置快捷方式在 package.json 文件

// 配置 scripts    "scripts": {        "start":"webpack"    }// 执行命令  npm start 打包

1.7、创建webpack服务器

// 安装全局webpack服务器    npm install -g webpack-dev-server    // 安装项目依赖    npm insatll webpack-dev-server --save-dev    // webpack的服务器默认端口是8080,可以通过port进行修改 // 运行webpack服务器    webpack-dev-server// 访问页面 localhost:8080/build//

1.8、配置webpack服务器 package.json

// 配置 scripts    "scripts": {        "start":"webpack",        "dev": "webpack-dev-server"    }// 执行命令  npm run dev 运行

1.9、配置热更新

// 配置 scripts    "scripts": {        "start":"webpack",        "dev": "webpack-dev-server --content-base build --inline --hot"        // --content-base build   默认路径的文件        // --inline --hot   更改内容,页面自动更新    }// 执行命令  npm run dev 运行// 访问页面 localhost:8080

2.0、脚本配置Loaders

// 安装包,获取json数据// npm install json-loader// webpack.config.js 配置module:{    rules:[        {            test: /\.json$/,            // 正则表达式            type: 'javascript/auto',            loader: 'json-loader'            // 要执行任务的名字        }}// app.js 引入 data.json。 使用node的commonjs格式,还没安装es6的编译包,不能用import。var Data = require("./data.json")// 安装依赖包,将es6编译成es5  推荐安装 @babel/preset-envnpm install babel-loader @babel/core @babel/preset-env --save-dev // webpack.config.js 配置module:{  rules:[          {            test: /\.js$/,            loader: 'babel-loader',            query:{                presets: ['@babel/preset-env']            }          }       ]}// 因为版本更新的原因,安装和配置 babel-core、babel-preset-* 报错,要换成@babel/core、@babel/preset-*// 其余css、image、less的安装配置都类似,1、安装依赖包。2、webpack.config.js中配置

2.1、插件配置plugins

// 实现webpack在启动服务器之后,自动开启浏览器功能npm install --save-dev open-browser-webpack-plugin// 在 webpcak.config.js 配置// 引用    var webpack = require("webpack");        var openBrowser = require("open-browser-webpack-plugin");            module.exports = {        // 插件配置        plugins: [            new openBrowser({                url: "http://localhost:8080"            })        ]    }

2.2、.babelrc配置文件

// 在根目录下创建文件  .babelrc// 将webpack.config.js文件的 qurey代码// query:{//    presets: ['@babel/preset-env']// }// 移到 .babelrc中{    "presets": ["@babel/preset-env","@babel/preset-react"]}// 注意:在引用的时候,直接引用babel-loader即可

2.3、.gitignore 忽略文件

// 根目录下创建 .gitignore 文件//配置      node_modules/    build/    npm-debug.log

转载地址:http://hzvwo.baihongyu.com/

你可能感兴趣的文章
strus2与spring3 mvc的差别
查看>>
no_unnest,push_subq,push_pred的用法 (转)
查看>>
jQuery中ajax的使用与缓存问题的解决方法
查看>>
am335x 内核频率 ddr3频率 电压调整
查看>>
<runtime> 的 <assemblyIdentity> 元素和<bindingRedirect> 元素
查看>>
【LeetCode】76. Minimum Window Substring
查看>>
查找任意数目参数的最大值
查看>>
UVa 1586 - Molar Mass
查看>>
Android蓝牙设备名修改
查看>>
Oracle PL/SQL随堂笔记总结
查看>>
编码原则:最小化使用控制结构(条件和循环)续:告别 break 和 continue
查看>>
如何提高逻辑思维的能力 思维的层次 逻辑思维能力练习方式
查看>>
轻易不要直接修改文档
查看>>
流星蝴蝶剑无限气改法
查看>>
微信公众平台开发(76) 无高级接口账号获取用户基本信息
查看>>
C++中for_each的应用
查看>>
Cocos2d-x3.0游戏实例之《别救我》第四篇——乱入的主角
查看>>
Android_神奇的android:clipChildren属性
查看>>
数据库事务的隔离级别
查看>>
Java入门记(二):向上转型与向下转型
查看>>