[关闭]
@kungfuboy 2016-07-02T03:23:19.000000Z 字数 1655 阅读 978

Gulp + Webpack

工具


前几天脑洞大开,想着能不能在Github Pages上布置一个基于React的SPA,哇,想想就很酷。

然而经过两天的折腾,发现太难了,解析.md文件就是个重要的问题,Github Pages官方的Jekyll引擎似乎是事先将.md格式的文件转化为.html,不知道在哪个角落猫着,需要的时候再拿出来。

如果我要建立自己的.md解析机制,那……我的时间都花在建立博客网站上了,博客还写不写了?在这等衡量下,决定不再深究了,就用自己已经掌握的知识开干……做出来再说!

于是想到,能不能用单页面和传统页面结合的方式?好吧,听起来是有点怪,但体验上,至少应该会比传统页面要好一些吧……

磨刀不误砍柴功,事先花时间搭建好开发环境是很值得的,由于我的博客是由SPA和传统页面相结合,思虑再三,我还是决定把两个开发环境分开——用Gulp开发传统页面,用Webpack开发SPA。

理由很简单,在传统页面上,模板渲染Jekyll已经做好了,只需要按照它的规则书写即可,主要的开发工作应该是在页面样式上,也就是css代码,那么gulp的主要工作就是转换sass了。至于Webpack,是用来打包组件的,虽然可以写在一起,但我可不想转换个sass就需要把react组件给打包一次,那太浪费时间。

先配置SPA这边吧,准确来说是Webpack + react + material-ui + babel

  1. npm init
  2. # 一路Enter
  3. npm install --save-dev webpack
  4. # 安装webpack
  5. npm install --save react react-dom react-router react-tap-event-plugin material-ui
  6. # 生产用的 React 与 Material-UI 部分
  7. npm install --save-dev babel-core babel-loader
  8. # Babel转换器的核心部分
  9. npm install --save-dev babel-preset-es2015 babel-preset-react babel-preset-stage-1
  10. # Babel转换器的三个额外配置
  11. vim .babelrc
  12. # 新建文件,写入以下内容
  13. ---
  14. {
  15. "presets": [
  16. "es2015",
  17. "react",
  18. "stage-1"
  19. ],
  20. "plugins": []
  21. }
  22. ---
  23. vim webpack.config.js
  24. # 新建文件,写入以下内容
  25. ---
  26. var path = require('path');
  27. module.exports = {
  28. entry: './index.jsx',
  29. output: {
  30. path: path.join(__dirname, '/dist'),
  31. filename: 'bundle.js'
  32. },
  33. resolve: {
  34. extensions: ['', '.js', '.jsx']
  35. },
  36. module: {
  37. loaders: [
  38. { test: /\.jsx?$/, loaders: ['babel'] }
  39. ]
  40. }
  41. }
  42. ---
  43. vim package.json
  44. # 更改scripts域
  45. ---
  46. "scripts": {
  47. "build": "webpack",
  48. "build-dev": "webpack -w -d"
  49. }
  50. ---
  51. vim index.jsx
  52. # 编写入口文件
  53. ---
  54. import React from 'react';
  55. import ReactDOM from 'react-dom';
  56. import { Router, Route, IndexRoute, hashHistory } from "react-router"
  57. import routes from './src/routes'
  58. ReactDOM.render(
  59. <Router history={hashHistory}>{routes}</Router>,
  60. document.getElementById('container'));
  61. ---

Gulp + Sass + broswer-sync

  1. npm i -D gulp gulp-autoprefixer browser-sync gulp-sass
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注