Skip to content

Commit 2ae7bb6

Browse files
committed
add transformLinkedPages
1 parent 4213931 commit 2ae7bb6

10 files changed

Lines changed: 51 additions & 88 deletions

File tree

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@
5454
"build:asset": "babel-node ./tool/build.asset.js",
5555
"build:page": "babel-node ./tool/build.page.js",
5656
"build:bundle": "babel-node ./tool/build.bundle.js",
57-
"build": "npm run clean:target; npm run build:asset; npm run build:bundle; npm run build:page;",
58-
"build:prod": "webpack --mode production",
57+
"build:water": "",
58+
"build": "npm run clean:target; npm run build:asset; npm run build:bundle; npm run build:page;",
5959
"start": "webpack-dev-server --open --mode development"
6060
}
6161
}

src/scripts/pages/about.js

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,23 @@
1-
"use strict";
21
import React from 'react';
32

4-
let pkg = require("../../../package.json");
5-
import Conf from '../../../tool/base.config';
6-
73
import Head from '../components/Head';
84
import Header from '../components/Header';
95
import Main from '../components/Main';
106
import Footer from '../components/Footer';
117

12-
const About = () => {
13-
let pageTitle = `About Us`;
8+
const About = ({title,description,scripts,styles,rel, gaKey}) => {
149
return (
1510
<html className="no-js" lang="en">
16-
<Head title={pageTitle} description={pkg.description} styles={Conf.styles} scripts={Conf.scripts} rel="../"/>
17-
18-
<body className='page-about container-fluid top-container'>
19-
<Header title={pageTitle} rel="../"/>
20-
<Main>
21-
<h1>About React2Html</h1>
22-
<p>More details can be found at <a href="https://github.com/modesty/react2html"> GitHub </a></p>
23-
</Main>
24-
<Footer rel="../"/>
25-
</body>
11+
<Head title={title} description={description} scripts={scripts} styles={styles} rel={rel} />
12+
<body data-track={gaKey} className='container'>
13+
<Header title={title} />
14+
<Main>
15+
<h1>About React2Html</h1>
16+
<h1>About React2Html</h1>
17+
<p>More details can be found at <a href="https://github.com/modesty/react2html"> GitHub </a></p>
18+
</Main>
19+
<Footer rel={rel} />
20+
</body>
2621
</html>
2722
);
2823
};

src/scripts/pages/contact.js

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,22 @@
1-
"use strict";
21
import React from 'react';
32

4-
let pkg = require("../../../package.json");
5-
import Conf from '../../../tool/base.config';
6-
73
import Head from '../components/Head';
84
import Header from '../components/Header';
95
import Main from '../components/Main';
106
import Footer from '../components/Footer';
117

12-
const Contact = () => {
13-
let pageTitle = `Contact Us`;
8+
const Contact = ({title,description,scripts,styles,rel, gaKey}) => {
149
return (
1510
<html className="no-js" lang="en">
16-
<Head title={pageTitle} description={pkg.description} styles={Conf.styles} scripts={Conf.scripts} rel="../"/>
17-
18-
<body className='container-fluid'>
19-
<Header title={pageTitle} rel="../"/>
20-
<Main>
21-
<h1>React2Html</h1>
22-
<p>email the author: <a href="mailto:modestyz@hotmail.com?subject=About%20CoeProject%20Article">modestyz@hotmail.com</a></p>
23-
</Main>
24-
<Footer rel="../"/>
25-
</body>
11+
<Head title={title} description={description} scripts={scripts} styles={styles} rel={rel} />
12+
<body data-track={gaKey} className='container'>
13+
<Header title={title} />
14+
<Main>
15+
<h1>React2Html</h1>
16+
<p>email the author: <a href="mailto:modestyz@hotmail.com?subject=About%20CoeProject%20Article">modestyz@hotmail.com</a></p>
17+
</Main>
18+
<Footer rel={rel} />
19+
</body>
2620
</html>
2721
);
2822
};

src/scripts/props/pages/about.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import indexProps from '../index';
2+
3+
export default { ...indexProps, rel: '../', title: "About", description: "About Modesty Zhang"};

src/scripts/props/pages/contact.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import indexProps from '../index';
2+
3+
export default { ...indexProps, rel: '../', title: "Contact", description: "Contact Modesty Zhang"};

tool/base.copier.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ function streamCopy(files, srcFolder, destFolder, cb) {
1717
}
1818
else {
1919
fs.createReadStream(inPath).pipe(fs.createWriteStream(outPath));
20-
console.log("copied file: " + filename);
20+
// console.log("copied file: " + filename);
2121
}
2222
});
2323
}
2424
else {
2525
fs.createReadStream(inPath).pipe(fs.createWriteStream(outPath));
26-
console.log("copied file: " + filename);
26+
// console.log("copied file: " + filename);
2727
}
2828
});
2929

tool/build.page.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
import Conf from './base.config';
22
import helper from './build.transform';
33

4-
function transformDefaultPage() {
5-
helper.transformOnePage('index.js', './model/index.js', Conf.src.js_path, Conf.target.path);
6-
}
7-
84
function main() {
9-
transformDefaultPage();
10-
// helper.transformLinkedPages();
5+
helper.transformOnePage('index.js', './props/index.js', Conf.src.js_path, Conf.target.path);
6+
helper.transformLinkedPages('pages', 'props', Conf.src.js_path, Conf.target.path);
117
}
128

139
main();

tool/build.transform.js

Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -77,24 +77,8 @@ function outputOnePage(htmlStream, destFolder) {
7777
});
7878
}
7979

80-
function parseAndPrepareDirs(pageFile, propFile, srcFolder, destFolder) {
81-
let pathParts = pageFile.split(path.sep);
82-
let relPath = "";
83-
for (let i = 0; i < pathParts.length - 1; i++) {
84-
relPath = relPath + path.sep + pathParts[i];
85-
mkdirp(path.join(destFolder, relPath));
86-
}
87-
88-
return {
89-
pageFile: path.basename(pageFile),
90-
propFile: propFile ? relPath + path.sep + propFile: null,
91-
srcFolder: srcFolder + relPath,
92-
destFolder: path.normalize( destFolder + relPath + path.sep + path.basename(pageFile, '.js') )
93-
};
94-
}
95-
9680
function transformOnePage(pageFile, propFile, srcFolder, destFolder) {
97-
console.log(`☯︎ start transform ${pageFile} ...`);
81+
console.log(`☯︎ start transform ${pageFile} ...`);
9882

9983
const file = path.join(srcFolder, pageFile);
10084
let Component = require(file);
@@ -117,28 +101,21 @@ function transformOnePage(pageFile, propFile, srcFolder, destFolder) {
117101
outputOnePage(htmlStream, destFolder);
118102
}
119103

120-
function transformLinkedPage(filename) {
121-
const {pageFile, propFile, srcFolder, destFolder} = parseAndPrepareDirs(filename,
122-
null, Conf.src.js_path + "/pages", Conf.target.path);
123-
124-
transformOnePage(pageFile, propFile, srcFolder, destFolder);
125-
}
126-
127-
function transformLinkedPages() {
128-
glob("**/*.js", {cwd: Conf.src.js_path + "/pages"}, function(err, files) {
104+
function transformLinkedPages(dir, propDir, srcFolder, destFolder) {
105+
const cwd = `${srcFolder}/${dir}`;
106+
glob("**/*.js", {cwd}, (err, files) => {
129107
if (err) {
130-
console.log("✗ Error: transformLinkedPages".underline.maroon, err);
108+
console.error("✗ Error: transformLinkedPages", err);
131109
}
132110
else {
133-
files.forEach( filename => {
134-
transformLinkedPage(filename);
111+
files.forEach(filename => {
112+
transformOnePage(filename, `../${propDir}/${dir}/${filename}`, `${srcFolder}/${dir}`, `${destFolder}/${path.basename(filename, '.js')}`);
135113
});
136114
}
137115
});
138116
}
139117

140118
export default {
141119
transformOnePage,
142-
transformLinkedPage,
143120
transformLinkedPages
144121
};

tool/build.watcher.js

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ function _getFileType(f) {
1616
let retVal = 0;
1717
let extName = path.extname( path.basename(f) );
1818
if (!extName || extName.length < 2) {
19-
console.log("ignore", path.basename(f));
19+
console.info(`☯︎ ignore:`, path.basename(f));
2020
}
2121
else if (copyFileExt.test(extName)) {
2222
retVal = 1;
@@ -66,51 +66,46 @@ function _handleRemovedFile(f) {
6666
let relPath = _getRelativePath(f);
6767
fs.unlink(path.join(Conf.target.path, relPath), (err) => {
6868
if (err) {
69-
console.log(`✗ Error: when deleting ${relPath}`, err);
69+
console.error(`✗ Error: when deleting ${relPath}`, err);
7070
}
7171
else {
72-
console.log(`file deleted: ${relPath}`);
72+
console.info(`☯︎ File deleted: ${relPath}`);
7373
}
7474
});
7575
}
7676
else if (fileType === 1) {
77-
console.error('index page should never be deleted.')
77+
console.error('✗ Error: index page should never be deleted.')
7878
}
7979
else if (fileType === 2) {
8080
let targetFile = path.basename(f, ".js") + ".html";
8181
fs.unlink(path.join(Conf.target.path, targetFile), (err) => {
8282
if (err) {
83-
console.log(`✗ Error: when deleting ${targetFile}`, err);
83+
console.error(`✗ Error: when deleting ${targetFile}`, err);
8484
}
8585
else {
86-
console.log(`file deleted: ${targetFile}`);
86+
console.info(`☯︎ File deleted: ${targetFile}`);
8787
}
8888
});
8989
}
9090
}
9191

92-
let _server_running = false;
9392
watch.watchTree(Conf.src.path, {
9493
ignoreDotFiles: true,
9594
ignoreUnreadableDir: true,
9695
ignoreNotPermitted: true,
9796
ignoreDirectoryPattern: /\/client\//i,
9897
interval: 500
99-
}, function (f, curr, prev) {
98+
}, (f, curr, prev) => {
10099
if (typeof f == "object" && prev === null && curr === null) {
101-
console.log("watcher: finished walking the source tree".underline.magenta);
102-
if (!_server_running) {
103-
_server_running = true;
104-
Runner.watchCompile(helper.startLiveServer);
105-
}
100+
console.log("☯︎ watcher: finished walking the source tree");
106101
} else if (prev === null) {
107-
console.log("\nwatcher: new file:", path.basename(f));
102+
console.log("☯︎ watcher: new file:", path.basename(f));
108103
_handleChangedFile(f);
109104
} else if (curr.nlink === 0) {
110-
console.log("\nwatcher: file removed:", path.basename(f));
105+
console.log("☯︎ watcher: file removed:", path.basename(f));
111106
_handleRemovedFile(f);
112107
} else {
113-
console.log("\nwatcher: file changed:", path.basename(f));
108+
console.log("☯︎ watcher: file changed:", path.basename(f));
114109
_handleChangedFile(f);
115110
}
116111
});

0 commit comments

Comments
 (0)