webpack+vue+express(hot)热启动调试简单配置方法


Posted in Javascript onSeptember 19, 2018

前言

最近搞vue+webpack,vue的api还是比较容易懂的,每次build很复杂,这里就介绍下热启动调试吧,心累~~~

ITDogFire ?sky

工具及目录

所用的到的简单工具 webstorm +vue +webpack +express,小项目都是官方down下来的。

目录介绍如下

webpack+vue+express(hot)热启动调试简单配置方法

package

{
 "name": "yx",
 "version": "1.0.0",
 "description": "A sample Node.js app using Express 4",
 "main": "server.js",
 "scripts": {
 "build": "webpack --config ./build/webpack.dev.conf.js --progress",
 "dev": "webpack --watch",
 "start": "node server.js"
 },
 "keywords": [
 "node",
 "express"
 ],
 "license": "MIT",
 "dependencies": {
 "babel-core": "^6.10.4",
 "babel-loader": "^6.2.5",
 "babel-plugin-transform-runtime": "^6.12.0",
 "babel-polyfill": "^6.2.0",
 "babel-preset-es2015": "^6.13.2",
 "babel-preset-es2015-rollup": "^1.1.1",
 "babel-preset-react": "^6.11.1",
 "babel-preset-stage-0": "^6.5.0",
 "babel-preset-stage-2": "^6.1.18",
 "babel-preset-stage-3": "^6.11.0",
 "babel-runtime": "^6.0.0",
 "body-parser": "1.12.3",
 "bootstrap": "~3.3.6",
 "busboy": "~0.2.12",
 "casperjs": "^1.1.0-beta5",
 "chai": "^3.4.1",
 "connect": "~3.4.0",
 "connect-busboy": "~0.0.2",
 "cookie-parser": "^1.3.5",
 "cookie-session": "2.0.0-alpha.1",
 "css-loader": "^0.23.1",
 "debug": "~2.0.0",
 "ejs": "2.3.1",
 "ejs-compiled-loader": "^2.1.1",
 "ejs-loader": "^0.3.0",

 "express": "4.12.3",
 "extract-text-webpack-plugin": "^1.0.1",
 "file-loader": "^0.9.0",
 "glob": "^7.0.5",
 "html-loader": "^0.4.3",
 "html-webpack-plugin": "^2.22.0",
 "jquery": "^3.1.0",
 "jsx-loader": "^0.13.2",
 "jwt-simple": "^0.5.0",
 "leanengine": "^1.1.0",
 "less": "^2.7.1",
 "less-loader": "^2.2.3",
 "mocha": "^2.3.4",
 "multiparty": "~4.1.2",
 "node-xlsx": "~0.6.0",
 "phantomjs-prebuilt": "^2.1.7",
 "react": "^15.3.1",
 "react-dom": "^15.3.1",
 "react-router": "^2.7.0",
 "request": "2.65.0",
 "rollup": "^0.32.0",
 "rollup-plugin-babel": "^2.4.0",
 "sinon": "^1.17.3",
 "sinon-chai": "^2.8.0",
 "style-loader": "^0.13.1",
 "todomvc-app-css": "^2.0.3",
 "uglify-js": "^2.6.2",
 "underscore": "~1.8.3",
 "url-loader": "^0.5.7",

 "vue": "^2.0.0-alpha.7",
 "vue-loader": "^9.0.3",
 "vue-hot-reload-api": "^1.2.0",
 "vue-html-loader": "^1.0.0",
 "vue-style-loader": "^1.0.0",

 "webpack-dashboard": "^0.1.8",
 "wechat": "^2.0.3",
 "wechat-api": "^1.28.0",
 "weex-html5": "^0.3.2",
 "weex-loader": "^0.3.0",

 "webpack": "^1.13.2",
 "webpack-dev-middleware": "^1.4.0",
 "webpack-dev-server": "^1.14.1",
 "webpack-hot-middleware": "^2.6.0",
 "webpack-merge": "^0.8.3",

 "eslint": "^2.2.0",
 "eslint-config-vue": "^1.0.0",
 "eslint-friendly-formatter": "^2.0.6",
 "eslint-loader": "^1.2.0",

 "eventsource-polyfill": "^0.9.6"
 },
 "engines": {
 "node": "4.x"
 }
}

base.conf

var path = require('path'),
 webpack = require('webpack');
// var hotMiddlewareScript = 'webpack-hot-middleware/client?reload=true';

module.exports = {
 entry: {
  test1: './views/vue/test1/test1.js',
  cart: './views/vue/shopping-cart/main.js',

  // 框架 / 类库 单独打包
  vendor: [
   'vue',
   //'vue-router',
   //'vue-resource',
   //'lodash',
   //'superagent'
  ]
 },
 output: {
  path: path.resolve(__dirname, '../public/dist/static'),
  publicPath:path.resolve(__dirname, '../public/dist/static'),
  filename: '[name]/build.js',
 },
 resolve: {
  extensions: ['', '.js', '.vue', '.less', 'sass'],
  //alias: {
  // src: path.resolve(__dirname, '../src'),
  // // 自定义路径别名
  // COMPONENT: path.resolve(__dirname, '../src/components'),
  // SERVICE: path.resolve(__dirname, '../src/services'),
  // VIEW: path.resolve(__dirname, '../src/views')
  //}
 },
 resolveLoader: {
  root: path.join(__dirname, 'node_modules')
 },
 module: {
  loaders: [{
   test: /\.vue$/,
   loader: 'vue'
  }, {
   test: /\.js$/,
   loader: 'babel',
   exclude: /node_modules|vue\/dist|vue-hot-reload-api|vue-loader/
  }, {
   test: /\.json$/,
   loader: 'json'
  }, {
   test: /\.less$/,
   loader: 'css!less'
  }, {
   test: /\.(png|jpg|gif|svg)$/,
   loader: 'url',
   query: {
    limit: 10000,
    name: '[name].[ext]?[hash]'
   }
  }, {
   test: /\.(eot|woff|ttf|svg)$/,
   loader: 'url-loader?limit=30000&name=[name]-[hash].[ext]'
  }, {test: /\.ejs$/, loader: 'ejs-compiled?htmlmin'},
   {
    test: /\.scss$/,
    loaders: ["style", "css", "sass"]
   }]
 },
 vue: {
  loaders: {
   js: 'babel',
   less: 'vue-style!css!less',
   sass: 'vue-style!css!sass'
  }
 },
 //eslint: {
 // formatter: require('eslint-friendly-formatter')
 //},
 plugins: [
  // new webpack.optimize.CommonsChunkPlugin({
  //  names: ['vendor', 'mainifest']
  // })
 ]
};

dev.conf

var webpack = require('webpack'),
 config = require('./webpack.base.conf');

config.devtool = 'eval-source-map';

// add hot-reload related code to entry chunk
config.entry.cart = [
 'eventsource-polyfill',
 'webpack-hot-middleware/client?reload=true',
 config.entry.cart
];
config.plugins = (config.plugins || []).concat([
 new webpack.optimize.OccurenceOrderPlugin(),
 new webpack.HotModuleReplacementPlugin(),
 new webpack.NoErrorsPlugin(),
]);

module.exports = config;

启动文件app.js

//webpack
var webpack = require('webpack'),
 // favicon = require('express-favicon'),
 config = require('./build/webpack.dev.conf');
var compiler = webpack(config);
app.use(require('webpack-dev-middleware')(compiler, {
 noInfo: true,
 publicPath: config.output.publicPath,
 stats: {
  colors: true
 }
}));
// enable hot-reload and state-preserving
// compilation error display
app.use(require('webpack-hot-middleware')(compiler));

这里只是简单配置,mark一下,可以自己刷新了!

以上这篇webpack+vue + express (hot) 热启动调试简单配置方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
User Scripts: Video Download by User Scripts
May 14 Javascript
不得不分享的JavaScript常用方法函数集(下)
Dec 25 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
Mar 11 Javascript
AngularJs Managing Service Dependencies详解
Sep 02 Javascript
JavaScript SHA512加密算法详细代码
Oct 06 Javascript
JS常用知识点整理
Jan 21 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
Apr 10 Javascript
JavaScript数据结构之二叉树的删除算法示例
Apr 13 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
Jul 18 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
Feb 23 Javascript
JavaScript模板引擎应用场景及实现原理详解
Dec 14 Javascript
JS实现的字符串数组去重功能小结
Jun 17 Javascript
自己动手封装一个React Native多级联动
Sep 19 #Javascript
vue中如何实现后台管理系统的权限控制的方法示例
Sep 19 #Javascript
5分钟快速掌握JS中var、let和const的异同
Sep 19 #Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
Sep 19 #Javascript
node.js环境搭建图文详解
Sep 19 #Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
Sep 19 #Javascript
vue生命周期和react生命周期对比【推荐】
Sep 19 #Javascript
You might like
PHP中,文件上传
2006/12/06 PHP
php在线解压ZIP文件的方法
2014/12/30 PHP
php中实现可以返回多个值的函数实例
2015/03/21 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
2013/07/10 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
解决Ant Design Modal内嵌Form表单initialValue值不动态更新问题
2020/10/29 Javascript
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
Canvas实现放大镜效果完整案例分析(附代码)
2020/11/26 HTML / CSS
群众路线四风问题整改措施
2014/09/27 职场文书
2014年导购员工作总结
2014/11/18 职场文书
物业工程部岗位职责
2015/02/11 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
最感人的道歉情书
2015/05/12 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
初中政治教学工作总结
2015/08/13 职场文书
python自动统计zabbix系统监控覆盖率的示例代码
2021/04/03 Python