瀏覽代碼

init react/redux repo

Skylsmoi 6 年之前
當前提交
25b19b4761
共有 9 個文件被更改,包括 229 次插入0 次删除
  1. 13 0
      .editorconfig
  2. 6 0
      .gitignore
  3. 18 0
      dist/index.html
  4. 51 0
      package.json
  5. 19 0
      src/index.js
  6. 6 0
      src/reducer/init.js
  7. 6 0
      src/reducer/root.js
  8. 17 0
      src/store.js
  9. 93 0
      webpack.config.js

+ 13 - 0
.editorconfig 查看文件

@@ -0,0 +1,13 @@
1
+# doc here : https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties
2
+root = true
3
+
4
+[*]
5
+indent_style = space
6
+indent_size = 2
7
+end_of_line = lf
8
+charset = utf-8
9
+insert_final_newline = true
10
+trim_trailing_whitespace = true
11
+
12
+[*.py]
13
+indent_size = 4

+ 6 - 0
.gitignore 查看文件

@@ -0,0 +1,6 @@
1
+# Created by .ignore support plugin (hsz.mobi)
2
+.idea/
3
+.git/
4
+node_modules/
5
+/dist/tracim.app.entry.js
6
+/dist/tracim.vendor.bundle.js

+ 18 - 0
dist/index.html 查看文件

@@ -0,0 +1,18 @@
1
+<!DOCTYPE html>
2
+<html>
3
+<head>
4
+  <meta charset='utf-8' />
5
+  <title>Tracim</title>
6
+  <link rel='shortcut icon' href='favicon.ico'>
7
+
8
+  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
9
+
10
+  <!--<link rel='stylesheet' href='asset/font-awesome-4.7.0/css/font-awesome.min.css'>-->
11
+</head>
12
+<body>
13
+<div id='content'></div>
14
+
15
+<script src='tracim.vendor.bundle.js'></script>
16
+<script src='tracim.app.entry.js'></script>
17
+</body>
18
+</html>

+ 51 - 0
package.json 查看文件

@@ -0,0 +1,51 @@
1
+{
2
+  "name": "tracim_new_design",
3
+  "version": "1.0.0",
4
+  "description": "",
5
+  "main": "index.js",
6
+  "scripts": {
7
+    "servdev": "NODE_ENV=development webpack-dev-server --watch --colors --inline --hot --progress",
8
+    "build": "NODE_ENV=production webpack -p",
9
+    "test": "echo \"Error: no test specified\" && exit 1"
10
+  },
11
+  "author": "",
12
+  "license": "ISC",
13
+  "dependencies": {
14
+    "babel-core": "^6.26.0",
15
+    "babel-eslint": "^8.0.1",
16
+    "babel-loader": "^7.1.2",
17
+    "babel-plugin-transform-class-properties": "^6.24.1",
18
+    "babel-plugin-transform-object-assign": "^6.22.0",
19
+    "babel-plugin-transform-object-rest-spread": "^6.26.0",
20
+    "babel-polyfill": "^6.26.0",
21
+    "babel-preset-env": "^1.6.1",
22
+    "babel-preset-react": "^6.24.1",
23
+    "css-loader": "^0.28.7",
24
+    "prop-types": "^15.6.0",
25
+    "react": "^16.0.0",
26
+    "react-dom": "^16.0.0",
27
+    "react-redux": "^5.0.6",
28
+    "react-router": "^4.2.0",
29
+    "redux": "^3.7.2",
30
+    "redux-logger": "^3.0.6",
31
+    "redux-thunk": "^2.2.0",
32
+    "standard": "^10.0.3",
33
+    "standard-loader": "^6.0.1",
34
+    "style-loader": "^0.19.0",
35
+    "stylus": "^0.54.5",
36
+    "stylus-loader": "^3.0.1",
37
+    "url-loader": "^0.6.2",
38
+    "webpack": "^3.8.1"
39
+  },
40
+  "devDependencies": {
41
+    "webpack-dev-server": "^2.9.2"
42
+  },
43
+  "standard": {
44
+    "globals": [
45
+      "fetch",
46
+      "history"
47
+    ],
48
+    "parser": "babel-eslint",
49
+    "ignore": []
50
+  }
51
+}

+ 19 - 0
src/index.js 查看文件

@@ -0,0 +1,19 @@
1
+import React from 'react'
2
+import ReactDOM from 'react-dom'
3
+import { Provider } from 'react-redux'
4
+import { store } from './store.js'
5
+
6
+// require('./css/index.styl')
7
+
8
+const Temp = class Temp extends React.Component {
9
+  render () {
10
+    return (<div>It Works</div>)
11
+  }
12
+}
13
+
14
+ReactDOM.render(
15
+  <Provider store={store}>
16
+    <Temp />
17
+  </Provider>
18
+  , document.getElementById('content')
19
+)

+ 6 - 0
src/reducer/init.js 查看文件

@@ -0,0 +1,6 @@
1
+export default function init (state = {}, action) {
2
+  switch (action.type) {
3
+    default:
4
+      return state
5
+  }
6
+}

+ 6 - 0
src/reducer/root.js 查看文件

@@ -0,0 +1,6 @@
1
+import { combineReducers } from 'redux'
2
+import init from './init.js'
3
+
4
+const rootReducer = combineReducers({ init })
5
+
6
+export default rootReducer

+ 17 - 0
src/store.js 查看文件

@@ -0,0 +1,17 @@
1
+import { createStore, applyMiddleware, compose } from 'redux'
2
+import thunkMiddleware from 'redux-thunk'
3
+import { createLogger } from 'redux-logger'
4
+import rootReducer from './reducer/root.js'
5
+// import createSagaMiddleware from 'redux-saga'
6
+// import rootSaga from './saga.js'
7
+
8
+// const sagaMiddleware = createSagaMiddleware()
9
+
10
+export const store = (
11
+  (middleware, reduxDevTools) => createStore(rootReducer, compose(middleware, reduxDevTools || (f => f)))
12
+)(
13
+  applyMiddleware(thunkMiddleware, /* sagaMiddleware, */ createLogger()),
14
+  window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
15
+)
16
+
17
+// sagaMiddleware.run(rootSaga)

+ 93 - 0
webpack.config.js 查看文件

@@ -0,0 +1,93 @@
1
+const webpack = require('webpack')
2
+const path = require('path')
3
+const isProduction = process.env.NODE_ENV === 'production'
4
+
5
+module.exports = {
6
+  entry: {
7
+    app: ['babel-polyfill', './src/index.js'],
8
+    vendor: [
9
+      'babel-plugin-transform-class-properties',
10
+      'babel-plugin-transform-object-assign',
11
+      'babel-plugin-transform-object-rest-spread',
12
+      'babel-polyfill',
13
+      // 'lodash.pull',
14
+      // 'lodash.reject',
15
+      // 'lodash.uniqby',
16
+      'react',
17
+      'react-dom',
18
+      'react-redux',
19
+      'react-router',
20
+      // 'react-router-dom',
21
+      // 'react-select',
22
+      'redux',
23
+      'redux-logger',
24
+      // 'redux-saga',
25
+      'redux-thunk',
26
+      // 'whatwg-fetch',
27
+      // 'classnames'
28
+    ]
29
+  },
30
+  output: {
31
+    path: path.resolve(__dirname, 'dist'),
32
+    filename: 'tracim.app.entry.js',
33
+    pathinfo: !isProduction
34
+  },
35
+  devServer: {
36
+    contentBase: path.join(__dirname, 'dist/'),
37
+    port: 8090,
38
+    hot: true,
39
+    noInfo: true,
40
+    overlay: {
41
+      warnings: false,
42
+      errors: true
43
+    }
44
+    // headers: {
45
+    //   'Access-Control-Allow-Origin': '*'
46
+    // }
47
+  },
48
+  devtool: isProduction ? false : 'cheap-eval-source-map',
49
+  module: {
50
+    rules: [{
51
+      test: /\.jsx?$/,
52
+      enforce: 'pre',
53
+      use: 'standard-loader',
54
+      exclude: [/node_modules/]
55
+    }, {
56
+      test: [/\.js$/, /\.jsx$/],
57
+      loader: 'babel-loader',
58
+      options: {
59
+        presets: ['env', 'react'],
60
+        plugins: ['transform-object-rest-spread', 'transform-class-properties', 'transform-object-assign']
61
+      },
62
+      exclude: [/node_modules/]
63
+    }, {
64
+      test: /\.css$/,
65
+      use: ['style-loader', 'css-loader']
66
+    }, {
67
+      test: /\.styl$/,
68
+      use: ['style-loader', 'css-loader', 'stylus-loader']
69
+    }]
70
+  },
71
+  resolve: {
72
+    extensions: ['.js', '.jsx']
73
+  },
74
+  plugins: isProduction
75
+    ? [
76
+      new webpack.optimize.CommonsChunkPlugin({
77
+        name: 'vendor',
78
+        filename: 'tracim.vendor.bundle.js'
79
+      }),
80
+      new webpack.DefinePlugin({
81
+        'process.env': { 'NODE_ENV': JSON.stringify('production') }
82
+      }),
83
+      new webpack.optimize.UglifyJsPlugin({
84
+        compress: { warnings: false }
85
+      })
86
+    ]
87
+    : [
88
+      new webpack.optimize.CommonsChunkPlugin({
89
+        name: 'vendor',
90
+        filename: 'tracim.vendor.bundle.js'
91
+      })
92
+    ]
93
+}