Bladeren bron

Move content to react app

Benoît Hubert 7 jaren geleden
bovenliggende
commit
c8a42091aa
4 gewijzigde bestanden met toevoegingen van 204 en 26 verwijderingen
  1. 3 26
      index.html
  2. 97 0
      react-tuto/gulpfile.js
  3. 57 0
      react-tuto/package.json
  4. 47 0
      react-tuto/src/index.js

+ 3 - 26
index.html

@@ -61,36 +61,12 @@
 
 
         <div class="container">
-          <div class="section">
-
-            <!--   Icon Section   -->
-              <div class="col s12">
-                <h5 class="header">1. D'abord, un peu de HTML</h5>
-                <p>Ouvre le fichier <code>empty.html</code>.</p>
-                <p>Tu n'y verras pas grand chose. C'est normal, ça va être à toi de jouer !</p>
-                <p>Commence par ajouter du contenu entre les tags <code>&lt;body&gt;</code> et <code>&lt;/body&gt;</code>, sous la section "CONTENU". Un bouton par exemple. Si tu veux un exemple, regarde <a target="_blank" href="https://developer.mozilla.org/fr/docs/Web/HTML/Element/Button#Exemples">ici</a>. Après l'ajout, recharge cette page.</p>
-                <p>Tu verras normalement tes ajouts s'afficher sur la moitié droite de l'écran&nbsp;! Passe à l'étape suivante.</p>
-
-                <h5 class="header">2. Du JavaScript maintenant !</h5>
-
-                <h6>Hello World!</h6>
-                <p>Dans <code>empty.html</code>, ajoute ceci, sous la section "SCRIPTS" :</p>
-                <pre>
-&lt;script&gt;
-  alert("Hello World!");
-&lt;/script&gt;</pre>
-
-                <p>Puis recharge. Tu as forcément déjà vu ce genre de "popup". &Ccedil;a le mérite d'exister, même si c'est pas vraiment le top en matière d'UX !</p>
-
-                <h6>Les variables en JavaScript</h6>
-
-                <p>Tu connais Java ! Tu sais donc qu'en Java, les variables sont <strong>typées</strong>.</p>
-
-              </div>
+          <div class="section" id="root">
 
           </div>
         </div>
 
+
         <footer class="page-footer orange">
           <div class="footer-copyright">
             <div class="container">
@@ -118,6 +94,7 @@
   <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
   <script src="js/materialize.js"></script>
   <script src="js/init.js"></script>
+  <script src="react-tuto/js/bundle.react.js"></script>
   <script>
   </script>
 

+ 97 - 0
react-tuto/gulpfile.js

@@ -0,0 +1,97 @@
+const gulp = require('gulp');
+const sourcemaps = require('gulp-sourcemaps');
+const source = require('vinyl-source-stream');
+const buffer = require('vinyl-buffer');
+const browserify = require('browserify');
+const watchify = require('watchify');
+const babelify = require('babelify');
+const pathmod = require('pathmodify');
+const babel = require('gulp-babel');
+const uglify = require('gulp-uglify');
+const gutil = require('gulp-util');
+const zip = require('gulp-zip');
+const fs = require('fs');
+const es = require('event-stream');
+
+// const archiveFiles = [
+//   'style.css',
+//   'screenshot.png',
+//   '*.php'
+// ];
+// const builtFiles = [
+//   'js/*'
+// ];
+// const watchedFiles = [
+//   'style.css',
+//   'screenshot.png',
+//   '*.php',
+//   'js/*'
+// ];
+
+// const themeName = 'reago';
+
+function buildClient(watch, done) {
+  var bundler =
+    browserify('./src/index.js', { debug: true })
+      .plugin(pathmod, {mods: [
+        pathmod.mod.dir('node_modules', __dirname + '/node_modules'),
+      ]})
+      // Transform JSX      https://github.com/andreypopp/reactify/issues/58
+      // Fix unexpected ... https://github.com/babel/babel-loader/issues/170
+      .transform(babelify, { presets: ['es2015', 'stage-0', 'react'] });
+  return new Promise(function (resolve, reject) {
+    bundler.bundle()
+      .on('error', function(err) { console.error(err); this.emit('end'); })
+      .pipe(source('bundle.react.js'))
+      .pipe(buffer())
+      // .pipe(uglify())
+      .pipe(sourcemaps.init({ loadMaps: true }))
+      .pipe(sourcemaps.write('./'))
+      .pipe(gulp.dest('./js'))
+      .on('end', resolve);
+  });
+}
+
+// function extractThemeVersion() {
+//   return new Promise((resolve, reject) => {
+//     fs.readFile(__dirname + '/style.css', (err, buf) => {
+//       if(err) return reject(err);
+//       const stylesheet = buf.toString();
+//       const versionRegex = /Version\: ([0-9\.]+)/g;
+//       const matches = versionRegex.exec(stylesheet);
+//       themeVersion = matches[1];
+//       resolve(themeVersion);
+//     });
+//   });
+// }
+
+// function makeZip(cb) {
+//   return extractThemeVersion()
+//     .then(themeVersion => {
+//       var base = 'dist/' + themeVersion;
+//       var tmp = base + '/reago';
+//       var rebasedFiles = base + '/**/*';
+//       es.concat(
+//           gulp.src(archiveFiles)
+//               .pipe(gulp.dest(tmp)),
+//             gulp.src(builtFiles)
+//                 .pipe(gulp.dest( tmp + '/js')),
+//           gulp.src(rebasedFiles, { base })
+//               .pipe(zip(themeName + '-' + themeVersion + '.zip'))
+//               .pipe(gulp.dest('dist'))
+//       ).on('end', cb)
+//     });
+// }
+
+gulp.task('watch', function() {
+  gulp.watch(['src'], buildClient);
+  // gulp.watch(watchedFiles, makeZip);
+});
+
+gulp.task('buildClient', function() {
+  return buildClient();
+});
+
+// gulp.task('makeZip', makeZip);
+
+gulp.task('default', gulp.series('buildClient', 'watch'));

+ 57 - 0
react-tuto/package.json

@@ -0,0 +1,57 @@
+{
+  "name": "react-tuto",
+  "version": "1.0.0",
+  "description": "",
+  "main": "index.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "keywords": [],
+  "author": "",
+  "license": "ISC",
+  "dependencies": {
+    "bluebird": "^3.5.1",
+    "catch-links": "^2.0.1",
+    "gulp-util": "^3.0.8",
+    "lodash": "^4.17.4",
+    "react-markdown": "^3.1.4",
+    "react-redux": "^5.0.6",
+    "redux": "^3.7.2",
+    "redux-logger": "^3.0.6",
+    "redux-thunk": "^2.2.0"
+  },
+  "devDependencies": {
+    "babel-core": "^6.26.0",
+    "babel-plugin-transform-runtime": "^6.23.0",
+    "babel-preset-env": "^1.6.1",
+    "babel-preset-es2015": "^6.24.1",
+    "babel-preset-react": "^6.24.1",
+    "babel-preset-stage-0": "^6.24.1",
+    "babel-runtime": "^6.26.0",
+    "babelify": "^8.0.0",
+    "browserify": "^14.5.0",
+    "bufferutil": "^3.0.3",
+    "eslint": "^4.14.0",
+    "eslint-plugin-react": "^7.5.1",
+    "event-stream": "^3.3.4",
+    "feathers-localstorage": "^2.0.0",
+    "gulp": "^4.0.0",
+    "gulp-babel": "^7.0.0",
+    "gulp-buffer": "0.0.2",
+    "gulp-sourcemaps": "^2.6.3",
+    "gulp-tap": "^1.0.1",
+    "gulp-uglify": "^3.0.0",
+    "gulp-zip": "^4.1.0",
+    "gulplog": "^1.0.0",
+    "pathmodify": "^0.5.0",
+    "react": "^16.2.0",
+    "react-dom": "^16.2.0",
+    "react-router-dom": "^4.2.2",
+    "rollup-stream": "^1.24.1",
+    "socket.io-client": "^2.0.4",
+    "utf-8-validate": "^4.0.0",
+    "vinyl-buffer": "^1.0.1",
+    "vinyl-source-stream": "^2.0.0",
+    "watchify": "^3.9.0"
+  }
+}

+ 47 - 0
react-tuto/src/index.js

@@ -0,0 +1,47 @@
+import React from 'react';
+import ReactDOM from 'react-dom';
+const ReactMarkdown = require('react-markdown')
+
+const input = '# This is a header\n\nAnd this is a paragraph'
+
+
+class App extends React.Component {
+  render() {
+    return (
+
+            <div className="row">
+
+              <div className="col s12">
+                <h5 className="header">1. D'abord, un peu de HTML</h5>
+                <p>Ouvre le fichier <code>empty.html</code>.</p>
+                <p>Tu n'y verras pas grand chose. C'est normal, ça va être à toi de jouer !</p>
+                <p>Commence par ajouter du contenu entre les tags <code>&lt;body&gt;</code> et <code>&lt;/body&gt;</code>, sous la section "CONTENU". Un bouton par exemple. Si tu veux un exemple, regarde <a target="_blank" href="https://developer.mozilla.org/fr/docs/Web/HTML/Element/Button#Exemples">ici</a>. Après l'ajout, recharge cette page.</p>
+                <p>Tu verras normalement tes ajouts s'afficher sur la moitié droite de l'écran&nbsp;! Passe à l'étape suivante.</p>
+
+                <h5 className="header">2. Du JavaScript maintenant !</h5>
+
+                <h6>Hello World!</h6>
+                <p>Dans <code>empty.html</code>, ajoute ceci, sous la section "SCRIPTS" :</p>
+                <pre>
+&lt;script&gt;
+  alert("Hello World!");
+&lt;/script&gt;</pre>
+
+                <p>Puis recharge. Tu as forcément déjà vu ce genre de "popup". &Ccedil;a le mérite d'exister, même si c'est pas vraiment le top en matière d'UX !</p>
+
+                <h6>Les variables en JavaScript</h6>
+
+                <p>Tu connais Java ! Tu sais donc qu'en Java, les variables sont <strong>typées</strong>.</p>
+
+                <ReactMarkdown source={input} />
+
+              </div>
+            </div>
+    );
+  }
+}
+
+ReactDOM.render(
+  <App />,
+  document.getElementById('root')
+);