超级详细使用Webpack4.X 搭建H5开发环境

会撸码的小马 关注

2018.05.29 17:17* 字数 603 阅读 6453评论 0喜欢 5

很久没弄博客了,这两天有点时间来搞一下最近在弄的webpack工具

webpack是什么东西我就不介绍了,因为我使用的webpack4以上版本,这个版本有一些较大的更新,可以自己去官网上找找看就知道了。

一、准备工作

node安装,这个百度、Google一下一大把,不做介绍

二、开始

  1. 构建自己的目录结构,下图是我自己弄的目录结构:

     
    1.png
  2. 创建package.json文件,或者执行npm init 来生成
    我的package.json文件如下:

  1. {
  2. "name": "h5Base",
  3. "version": "1.0.0",
  4. "description": "h5Base",
  5. "main": "index.js",
  6. "scripts": {
  7. "service": "http-server -p 8002",
  8. "build": "webpack --config ./webpack.config.js --mode production --env.NODE_ENV=production",
  9. "dev": "node webpack.dev.service"
  10. },
  11. "author": "mjg",
  12. "license": "ISC",
  13. "devDependencies": {
  14. "babel-loader": "^7.1.4",
  15. "birdv3": "^0.3.33",
  16. "clean-webpack-plugin": "^0.1.19",
  17. "copy-webpack-plugin": "^4.5.1",
  18. "css-loader": "^0.28.11",
  19. "extract-text-webpack-plugin": "^4.0.0-beta.0",
  20. "file-loader": "^1.1.11",
  21. "html-loader": "^0.5.5",
  22. "html-webpack-plugin": "^3.2.0",
  23. "http-server": "^0.10.0",
  24. "mini-css-extract-plugin": "^0.2.0",
  25. "postcss-loader": "^2.1.3",
  26. "replace": "^0.3.0",
  27. "style-loader": "^0.20.3",
  28. "uglifyjs-webpack-plugin": "^1.2.4",
  29. "url-loader": "^1.0.1",
  30. "webpack": "^4.3.0",
  31. "webpack-cli": "^2.0.13",
  32. "webpack-dev-server": "^3.1.1",
  33. "webpack-merge": "^4.1.2"
  34. },
  35. "dependencies": {}
  36. }

OK,上面是我自己用到的一些库,如果有需要的朋友拷贝过去,然后执行npm install即可。

  1. 修改代码了
    3.1 先在index.html里面随便添加点测试代码:
  1. <!doctype html>
  2. <html lang="">
  3. <head>
  4. <meta http-equiv="pragma" content="no-cache">
  5. <meta http-equiv="Cache-Control " content="no-cache,must-revalidate">
  6. <meta name="description" content="">
  7. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  8. <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1, maximum-scale=1">
  9. <meta content="telephone=no" name="format-detection" />
  10. <meta name="x5-orientation" content="portrait">
  11. <title>demo title</title>
  12. </head>
  13. <body>
  14. <div class="root">
  15. <h1>我是测试</h1>
  16. </div>
  17. </body>
  18. </html>

3.2 修改index.js代码:

  1. import '../style/index.css'
  2. console.log('====================================');
  3. console.log(1);
  4. console.log('====================================');

3.3 修改index.css代码:

  1. .root {
  2. background: red;
  3. width: 200px;
  4. height: 200px;
  5. margin: 0 auto;
  6. }
  1. 代码处理完了,准备需要调试了,但是我们调试的话就需要启动服务,接下来我们就需要配置webpack的服务了
    4.1 创建webpack.config.js

  1. const webpack = require('webpack');
  2. const path = require('path');
  3. const ExtractTextPlugin = require('extract-text-webpack-plugin');
  4. const HtmlWebpackPlugin = require('html-webpack-plugin');
  5. const CleanWebpackPlugin = require('clean-webpack-plugin');
  6. const CopyWebpackPlugin = require('copy-webpack-plugin');
  7. const srcDir = path.join(__dirname, './src');
  8. const distDir = path.join(__dirname, './dist');
  9. module.exports = {
  10. entry: {
  11. index: [
  12. 'webpack/hot/dev-server',
  13. 'webpack-dev-server/client?http://localhost:80',
  14. "./src/js/index.js"
  15. ]
  16. },
  17. output: {
  18. path: path.resolve(__dirname, 'dist'),
  19. // 给js css 图片等在html引入中添加前缀
  20. publicPath: "../../",
  21. filename: 'js/[name].min.js',
  22. },
  23. devtool: 'source-map',
  24. module: {
  25. rules: [
  26. {
  27. test: /\.html$/,
  28. use: [
  29. {
  30. loader: "html-loader",
  31. options: { minimize: true }
  32. }
  33. ]
  34. },
  35. {
  36. test: /\.js$/,
  37. exclude: /node_modules/,
  38. use: {
  39. loader: "babel-loader"
  40. }
  41. },
  42. {
  43. test: /\.css$/,
  44. exclude: /node_modules/,
  45. use: ExtractTextPlugin.extract({
  46. fallback: "style-loader",
  47. use: {
  48. loader: 'css-loader'
  49. },
  50. })
  51. },
  52. {
  53. test: /\.(gif|jpg|png|woff|svg|eot|ttf)\??.*$/,
  54. loader: 'url-loader?limit=8192&name=img/[name].[ext]'
  55. }
  56. ]
  57. },
  58. plugins: [
  59. new CleanWebpackPlugin(['dist']),
  60. new ExtractTextPlugin('style/[name].min.css'),
  61. new HtmlWebpackPlugin({
  62. hash: true,
  63. chunks: ['index'],
  64. template: "./src/pages/index/index.html",
  65. filename: "pages/index/index.html"
  66. }),
  67. new webpack.HotModuleReplacementPlugin(),
  68. ]
  69. };

4.2 创建webpack.dev.service.js

  1. var WebpackDevServer = require("webpack-dev-server");
  2. var webpack = require("webpack");
  3. var webpackConfig = require('./webpack.config.js');
  4. var compiler = webpack(webpackConfig);
  5. var server = new WebpackDevServer(compiler, {
  6. hot: true,
  7. historyApiFallback: true,
  8. // It suppress error shown in console, so it has to be set to false.
  9. quiet: false,
  10. // It suppress everything except error, so it has to be set to false as well
  11. // to see success build.
  12. noInfo: false,
  13. stats: {
  14. // Config for minimal console.log mess.
  15. assets: false,
  16. colors: true,
  17. version: false,
  18. hash: false,
  19. timings: false,
  20. chunks: false,
  21. chunkModules: false
  22. },
  23. // contentBase不要直接指向pages,因为会导致css、js支援加载不到
  24. contentBase: __dirname + '/src/',
  25. }).listen(80, '0.0.0.0', function (err) {
  26. if (err) {
  27. console.log(err);
  28. }
  29. });
  1. 启动服务配置好了,在看看packag.json里面启动服务的命令:

"dev": "node webpack.dev.service"

那么在命令终端中输入: sudo npm run dev
ps:为什么加sudo?因为使用了80端口,所以加sudo,如果不使用80端口就不用加sudo

  1. 在浏览器中输入:http://localhost/pages/index/index.html就可以看到效果了

  2. 如果想打包正式上线,执行命令: npm run build就行,注意把webpack.config.js里面的一些sourceMap、entry里面的热更新去掉,当然自己重新搞一个线上的webpack.pro.config.js也可以,把一些开发调试功能去掉就行了

OK,以上就是我看到webpack4有更新后,随便搞得一个H5与webpack结合开发的工具,有问题欢迎随时提出!下一章讲说一下怎么使用webpack执行本地接口proxy,解决本地开发接口调试跨域问题

附上github地址:https://github.com/majianguang/h5Base

下一章,如何接入webpack的proxy跨域代理,以及允许绑定本地host调试的:https://www.jianshu.com/p/b3e0cc3863e6

超级详细使用Webpack4.X 搭建H5开发环境的更多相关文章

  1. Windows+QT+Eclipse+MinGW搭建QT开发环境详细教程

     Windows+QT+Eclipse+MinGW搭建QT开发环境详细教程 一.准备工具: QT-SDK for Windows:http://get.qt.nokia.com/qtsdk/qt-sd ...

  2. 苹果MAC中安装并搭建Android开发环境的详细步骤

    Android的开发平台搭建主要需要的工具有:Java虚拟机JDK.Eclipse.Eclipse插件ADT(Android Developer Tool)和Android开发包SDK,以下是具体的安 ...

  3. 基于ionic4、cordova搭建android开发环境

    前颜(yan)最近公司有一个项目需求是利用h5进行跨平台开发,这里所说的跨平台开发指的是:将h5代码利用某种方式或工具环境进行打包,最后生成android的apk以及ios的ipa. 本文只讲解and ...

  4. 基于 Webpack 4 搭建 Vue 开发环境

    自从工作之后,就已经很久没有写过博客了.时间被分割得比较碎,积累了一段时间的学习成果,才写下了这篇博客. 之前有写过 Webpack4 的文章,但是都比较偏入门,唯一的一篇实战篇 -- 基于Webpa ...

  5. 抛弃强大的TFS ,借助于BugTracker.NET + Visual Source Safe + SourceLink搭建项目开发环境

    微软公司的Team Foundation Server是个强大的项目管理工具,如果用.NET开发,它应该是首选的项目管理平台.TFS的成本比较高,而且和Visual Studio集成紧密.比如TSF有 ...

  6. 单机搭建Android开发环境(四)

    单机搭建安卓开发环境,前三篇主要是磨刀霍霍,这一篇将重点介绍JDK.REPO.GIT及编译工具的安装,下载项目代码并编译.特别说明,以下操作基于64位12.04 Server版Ubuntu.若采用其他 ...

  7. 单机搭建Android开发环境(三)

    单机搭建Android开发环境,第一篇重点介绍了如何优化Windows 7系统,以提高开发主机的性能并延长SSD的使用寿命.第二篇重点介绍了基于VMWare安装64位版的Ubuntu 12.04,并安 ...

  8. 【原创】windows下搭建vue开发环境+IIS部署

    [原创]win10下搭建vue开发环境  如果要转发,请注明原作者和原产地,谢谢! 特别说明:下面任何命令都是在windows的命令行工具下进行输入,打开命令行工具的快捷方式如下图:     详细的安 ...

  9. 在WP8上搭建cocos2d-x开发环境

    在WP8上搭建cocos2d-x开发环境 转自:https://github.com/koowolf/cocos-docs/blob/master/manual/framework/native/in ...

随机推荐

  1. 100-days: twelve

    Title:   Mark Zuckerberg wants Facebook's to emulate China's WeChat, but can it? emulate v.效仿,模仿 As ...

  2. Linux系统minicom命令详解

    minicom 功能说明:调制解调器通信程序 语 法:minicom [-8lmMostz][-a<on或0ff>][-c<on或off>][-C<取文件>][-d ...

  3. entity framework core 生成 postgresql 数据库实体

    .net core 2.0 使用db first 方式生成 表 和context PM 控制台运行命令出错 Scaffold-DbContext "Host=localhost;Databa ...

  4. Solidity的地址 数组如何判断是否包含一个给定的地址?

    Q: given address[] wallets. What is the correct method to check that the list contains a given addre ...

  5. 李白打酒——C++

    话说大诗人李白,一生好饮.幸好他从不开车.     一天,他提着酒壶,从家里出来,酒壶中有酒2斗.他边走边唱:     无事街上走,提壶去打酒.     逢店加一倍,遇花喝一斗.     这一路上,他 ...

  6. 线程属性 pthread_attr_t

    参考资料: https://blog.csdn.net/hudashi/article/details/7709413 Posix线程中的线程属性pthread_attr_t主要包括scope属性.d ...

  7. cpp 区块链模拟示例(一)工程建立

    /* 作 者: itdef 欢迎转帖 请保持文本完整并注明出处 技术博客 http://www.cnblogs.com/itdef/ 技术交流群 群号码:432336863欢迎c c++ window ...

  8. 日常LINUX操作一

    1.use root accounthttp://blog.csdn.net/sunxiaoju/article/details/51993091http://blog.csdn.net/gongch ...

  9. Python(五) 字典

  10. zlib+pcre+openssl+nginx安装

    安装nginx之前首先有3个包先要安装,一个是zlib,一个是pcr3,还有一个openssl http://nginx.org/en/docs/configure.html,这个是Nginx的安装手 ...