From 1e462fdc2c2fd1535082972a297f22e01f5678b9 Mon Sep 17 00:00:00 2001 From: Joel Marcey Date: Fri, 7 Dec 2018 09:22:19 -0800 Subject: [PATCH 1/6] Fix broken build Do not hardcode path in require to siteConfig --- v1/lib/server/utils.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/v1/lib/server/utils.js b/v1/lib/server/utils.js index 8ce892d33460..62906ac89adc 100644 --- a/v1/lib/server/utils.js +++ b/v1/lib/server/utils.js @@ -4,12 +4,17 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ + +const CWD = process.cwd(); + const cssnano = require('cssnano'); const autoprefixer = require('autoprefixer'); const postcss = require('postcss'); const path = require('path'); const escapeStringRegexp = require('escape-string-regexp'); -const siteConfig = require('../../website/siteConfig.js'); +const loadConfig = require('./config'); + +const siteConfig = loadConfig(`${CWD}/siteConfig.js`); function getSubDir(file, refDir) { const subDir = path.dirname(path.relative(refDir, file)).replace(/\\/g, '/'); From 4f7c20c602d970502d9763539cc04407666013ad Mon Sep 17 00:00:00 2001 From: Joel Marcey Date: Fri, 7 Dec 2018 09:29:19 -0800 Subject: [PATCH 2/6] Just require instead of loadConfig --- v1/lib/server/utils.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/v1/lib/server/utils.js b/v1/lib/server/utils.js index 62906ac89adc..24514b2f571b 100644 --- a/v1/lib/server/utils.js +++ b/v1/lib/server/utils.js @@ -12,9 +12,8 @@ const autoprefixer = require('autoprefixer'); const postcss = require('postcss'); const path = require('path'); const escapeStringRegexp = require('escape-string-regexp'); -const loadConfig = require('./config'); -const siteConfig = loadConfig(`${CWD}/siteConfig.js`); +const siteConfig = require(`${CWD}/siteConfig.js`); function getSubDir(file, refDir) { const subDir = path.dirname(path.relative(refDir, file)).replace(/\\/g, '/'); From 8d281ba58b922d2c7c22a1258b5d9b1b6c1ce460 Mon Sep 17 00:00:00 2001 From: Joel Marcey Date: Fri, 7 Dec 2018 09:32:50 -0800 Subject: [PATCH 3/6] Actually use loadConfig I think the test may be wrong too. --- v1/lib/server/utils.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/v1/lib/server/utils.js b/v1/lib/server/utils.js index 24514b2f571b..62906ac89adc 100644 --- a/v1/lib/server/utils.js +++ b/v1/lib/server/utils.js @@ -12,8 +12,9 @@ const autoprefixer = require('autoprefixer'); const postcss = require('postcss'); const path = require('path'); const escapeStringRegexp = require('escape-string-regexp'); +const loadConfig = require('./config'); -const siteConfig = require(`${CWD}/siteConfig.js`); +const siteConfig = loadConfig(`${CWD}/siteConfig.js`); function getSubDir(file, refDir) { const subDir = path.dirname(path.relative(refDir, file)).replace(/\\/g, '/'); From 810a3b87bc7a48402bfcfe9afc87bb58efda6c2d Mon Sep 17 00:00:00 2001 From: endiliey Date: Sat, 8 Dec 2018 01:54:10 +0800 Subject: [PATCH 4/6] refactor & nits --- v1/lib/server/__tests__/blog.test.js | 8 ++++++-- v1/lib/server/__tests__/docs.test.js | 19 ++++++++----------- v1/lib/server/blog.js | 9 ++++++++- v1/lib/server/docs.js | 2 +- v1/lib/server/utils.js | 10 +--------- 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/v1/lib/server/__tests__/blog.test.js b/v1/lib/server/__tests__/blog.test.js index 85438621ba81..9f874811467e 100644 --- a/v1/lib/server/__tests__/blog.test.js +++ b/v1/lib/server/__tests__/blog.test.js @@ -10,6 +10,10 @@ const blog = require('../blog'); const metadataUtils = require('../metadataUtils'); const {replaceAssetsLink} = require('../utils.js'); +jest.mock(`${process.cwd()}/siteConfig.js`, () => ({baseUrl: '/'}), { + virtual: true, +}); + const testFile = path.join( __dirname, '__fixtures__', @@ -76,7 +80,7 @@ describe('replaceAssetsLink', () => { 'utf8', ); const rawContent1 = metadataUtils.extractMetadata(doc1).rawContent; - const content1 = replaceAssetsLink(rawContent1, 'blog'); + const content1 = replaceAssetsLink(rawContent1, '/blog'); expect(content1).toMatchSnapshot(); expect(content1).toContain('![image1](/blog/assets/image1.png)'); expect(content1).toContain('![image2](/blog/assets/image2.jpg)'); @@ -95,7 +99,7 @@ describe('replaceAssetsLink', () => { 'utf8', ); const rawContent2 = metadataUtils.extractMetadata(doc2).rawContent; - const content2 = replaceAssetsLink(rawContent2, 'blog'); + const content2 = replaceAssetsLink(rawContent2, '/blog'); expect(content2).toMatchSnapshot(); expect(content2).not.toContain('![image1](/blog/assets/image1.png)'); expect(content2).not.toContain('![image2](/blog/assets/image2.jpg)'); diff --git a/v1/lib/server/__tests__/docs.test.js b/v1/lib/server/__tests__/docs.test.js index 6e04df3a9e1c..64399068ff33 100644 --- a/v1/lib/server/__tests__/docs.test.js +++ b/v1/lib/server/__tests__/docs.test.js @@ -5,17 +5,18 @@ * LICENSE file in the root directory of this source tree. */ -// simulate cwd to website so all require (CWD+'/siteConfig.js') will work -const originalCwd = process.cwd(); -if (!/website$/.test(originalCwd)) { - process.chdir(process.cwd() + '/website'); -} const path = require('path'); const fs = require('fs-extra'); const docs = require('../docs'); const metadataUtils = require('../metadataUtils'); const {replaceAssetsLink} = require('../utils.js'); +jest.mock( + `${process.cwd()}/siteConfig.js`, + () => ({baseUrl: '/', docsUrl: 'docs'}), + {virtual: true}, +); + jest.mock('../env', () => ({ translation: { enabled: true, @@ -187,7 +188,7 @@ describe('getFile', () => { describe('replaceAssetsLink', () => { test('transform document with valid assets link', () => { - const content1 = replaceAssetsLink(rawContent1, 'docs'); + const content1 = replaceAssetsLink(rawContent1, '/docs'); expect(content1).toMatchSnapshot(); expect(content1).toContain('![image1](/docs/assets/image1.png)'); expect(content1).toContain('![image2](/docs/assets/image2.jpg)'); @@ -201,7 +202,7 @@ describe('replaceAssetsLink', () => { }); test('does not transform document without valid assets link', () => { - const content2 = replaceAssetsLink(rawContent2, 'docs'); + const content2 = replaceAssetsLink(rawContent2, '/docs'); expect(content2).toMatchSnapshot(); expect(content2).not.toContain('![image1](/docs/assets/image1.png)'); expect(content2).not.toContain('![image2](/docs/assets/image2.jpg)'); @@ -209,7 +210,3 @@ describe('replaceAssetsLink', () => { expect(content2).toEqual(rawContent2); }); }); - -afterAll(() => { - process.chdir(originalCwd); -}); diff --git a/v1/lib/server/blog.js b/v1/lib/server/blog.js index 243435ec2db4..03942cbb373c 100644 --- a/v1/lib/server/blog.js +++ b/v1/lib/server/blog.js @@ -4,12 +4,16 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ +const CWD = process.cwd(); const React = require('react'); const path = require('path'); const fs = require('fs-extra'); const metadataUtils = require('./metadataUtils'); const {replaceAssetsLink} = require('./utils.js'); const {renderToStaticMarkupWithDoctype} = require('./renderUtils'); +const loadConfig = require('./config'); + +const siteConfig = loadConfig(`${CWD}/siteConfig.js`); function urlToSource(url) { if (!url || typeof url !== 'string') { @@ -59,7 +63,10 @@ function getMetadata(file) { const metadata = Object.assign( { path: fileToUrl(file), - content: replaceAssetsLink(result.rawContent, 'blog'), + content: replaceAssetsLink( + result.rawContent, + `${siteConfig.baseUrl}blog`, + ), }, result.metadata, ); diff --git a/v1/lib/server/docs.js b/v1/lib/server/docs.js index f88dcf667d51..394a242f1621 100644 --- a/v1/lib/server/docs.js +++ b/v1/lib/server/docs.js @@ -111,7 +111,7 @@ function getMarkup(rawContent, mdToHtml, metadata) { content = mdToHtmlify(content, mdToHtml, metadata); // replace any relative links to static assets (not in fenced code blocks) to absolute links - content = replaceAssetsLink(content, 'docs'); + content = replaceAssetsLink(content, `${siteConfig.baseUrl}docs`); const DocsLayout = require('../core/DocsLayout.js'); return renderToStaticMarkupWithDoctype( diff --git a/v1/lib/server/utils.js b/v1/lib/server/utils.js index 62906ac89adc..fd4839ced8fe 100644 --- a/v1/lib/server/utils.js +++ b/v1/lib/server/utils.js @@ -5,16 +5,11 @@ * LICENSE file in the root directory of this source tree. */ -const CWD = process.cwd(); - const cssnano = require('cssnano'); const autoprefixer = require('autoprefixer'); const postcss = require('postcss'); const path = require('path'); const escapeStringRegexp = require('escape-string-regexp'); -const loadConfig = require('./config'); - -const siteConfig = loadConfig(`${CWD}/siteConfig.js`); function getSubDir(file, refDir) { const subDir = path.dirname(path.relative(refDir, file)).replace(/\\/g, '/'); @@ -79,10 +74,7 @@ function replaceAssetsLink(oldContent, location) { } return fencedBlock ? line - : line.replace( - /\]\(assets\//g, - `](${siteConfig.baseUrl}${location}/assets/`, - ); + : line.replace(/\]\(assets\//g, `](${location}/assets/`); }); return lines.join('\n'); } From e4a74956ebb85a14ca18fe5405d3655271f595a1 Mon Sep 17 00:00:00 2001 From: endiliey Date: Sat, 8 Dec 2018 01:58:24 +0800 Subject: [PATCH 5/6] jest mock to fix test --- v1/lib/server/__tests__/docs.test.js | 2 +- v1/lib/server/utils.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/v1/lib/server/__tests__/docs.test.js b/v1/lib/server/__tests__/docs.test.js index 64399068ff33..372198940238 100644 --- a/v1/lib/server/__tests__/docs.test.js +++ b/v1/lib/server/__tests__/docs.test.js @@ -13,7 +13,7 @@ const {replaceAssetsLink} = require('../utils.js'); jest.mock( `${process.cwd()}/siteConfig.js`, - () => ({baseUrl: '/', docsUrl: 'docs'}), + () => ({baseUrl: '/', docsUrl: 'docs', cleanUrl: 'true'}), {virtual: true}, ); diff --git a/v1/lib/server/utils.js b/v1/lib/server/utils.js index fd4839ced8fe..905ffb883707 100644 --- a/v1/lib/server/utils.js +++ b/v1/lib/server/utils.js @@ -4,7 +4,6 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ - const cssnano = require('cssnano'); const autoprefixer = require('autoprefixer'); const postcss = require('postcss'); From 4e42759aff215eb4637d8bc0de0223885004e39e Mon Sep 17 00:00:00 2001 From: endiliey Date: Sat, 8 Dec 2018 02:04:41 +0800 Subject: [PATCH 6/6] fix test --- v1/lib/server/__tests__/docs.test.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/v1/lib/server/__tests__/docs.test.js b/v1/lib/server/__tests__/docs.test.js index 372198940238..6f20a02014c7 100644 --- a/v1/lib/server/__tests__/docs.test.js +++ b/v1/lib/server/__tests__/docs.test.js @@ -5,18 +5,18 @@ * LICENSE file in the root directory of this source tree. */ +// simulate cwd to website so all require (CWD+'/siteConfig.js') will work +const originalCwd = process.cwd(); +if (!/website$/.test(originalCwd)) { + process.chdir(process.cwd() + '/website'); +} + const path = require('path'); const fs = require('fs-extra'); const docs = require('../docs'); const metadataUtils = require('../metadataUtils'); const {replaceAssetsLink} = require('../utils.js'); -jest.mock( - `${process.cwd()}/siteConfig.js`, - () => ({baseUrl: '/', docsUrl: 'docs', cleanUrl: 'true'}), - {virtual: true}, -); - jest.mock('../env', () => ({ translation: { enabled: true, @@ -210,3 +210,7 @@ describe('replaceAssetsLink', () => { expect(content2).toEqual(rawContent2); }); }); + +afterAll(() => { + process.chdir(originalCwd); +});