From 207b0c932a308ca504f64838dade1b4116ac124e Mon Sep 17 00:00:00 2001 From: Brent Jackson Date: Sat, 23 Jun 2018 12:50:38 -0400 Subject: [PATCH] Adjust build and test --- README.md | 58 ----------- lib/build.js | 10 +- package.json | 2 +- test/build.js | 13 --- test/snapshots/components.js.md | 156 +++++++++++++++--------------- test/snapshots/components.js.snap | Bin 3192 -> 3184 bytes 6 files changed, 85 insertions(+), 154 deletions(-) diff --git a/README.md b/README.md index 3ae938d..a936c11 100644 --- a/README.md +++ b/README.md @@ -362,61 +362,3 @@ See the [example](https://github.com/c8r/x0/tree/master/examples/webpack-config) [webpack-merge]: https://github.com/survivejs/webpack-merge [webpack]: https://webpack.js.org ---- - -## To Do - -**REMOVE BEFORE MERGING** - -- [ ] changelog/docs - -## API Changes -- Supports nested routes -- Adds support for `.md` files, using MDX -- Configurable default styles for markdown and MDX files -- Adds LiveEditor and LivePreview capabilities to markdown -- Adds `--match` option for filtering files -- Adds `ignore` option for pages -- Optional layout component -- Optional Library component -- Support for 404 pages - -## Internal Changes -- Uses mdx loader for md/mdx/jsx files - -## Breaking Changes -- Specifying scope in JSX front matter is no longer supported - -- [x] static 404 output -- [x] 404 -- [x] Sidebar minHeight/pagination -- [x] Sidebar hidePagination option -- [x] bug: route.props from defaultProps -- [x] SidebarLayout -- [x] test getInitialProps -- [x] double check dynamic routing -- [x] pass RouterState props to view -- [x] props.children in custom app -- [x] require.context `_app` -- [x] peer deps -- [x] props.ignore -- [x] default layout for mdx/md -- [x] default route sorting -- [x] route dirname/full path -- [x] pass front-matter as props -- [x] markdown scope -- [x] deep require context -- [x] minimatch -- [x] move client modules to src -- [x] adjust resolve -- [x] props.Component in custom app? -- [ ] ~~Head component with react helmet~~ doesn't work -- [ ] ~~scope loader shim for jsx front matter~~ - -### Breaking - -- .jsx imports/scope -- .jsx props -- custom app path option (must be `_app.js`) (undocumented) -- Remove support for glamor and glamorous - diff --git a/lib/build.js b/lib/build.js index d58a946..4641278 100644 --- a/lib/build.js +++ b/lib/build.js @@ -1,4 +1,4 @@ -const fs = require('fs-extra') +const fs = require('fs') const path = require('path') const webpack = require('webpack') const MiniHTMLWebpackPlugin = require('mini-html-webpack-plugin') @@ -8,7 +8,7 @@ const React = require('react') const { renderToString, renderToStaticMarkup } = require('react-dom/server') const { StaticRouter } = require('react-router-dom') const semver = require('semver') - +const rimraf = require('rimraf') const util = require('util') const baseConfig = require('./config') @@ -100,7 +100,7 @@ const renderHTML = ({ } const remove = filename => { - fs.remove(filename, err => { + rimraf(filename, err => { if (err) console.log(err) }) } @@ -210,13 +210,15 @@ module.exports = async (opts) => { ) const compiler = webpack(config) + remove(opts.tempdir) + return new Promise((resolve, reject) => { compiler.run((err, stats) => { if (err) { reject(err) return } - remove(opts.tempdir) + // remove(opts.tempdir) if (opts.static) { const bundle = path.join(opts.outDir, 'bundle.js') remove(bundle) diff --git a/package.json b/package.json index ee8db3b..12414a5 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "scripts": { "start": "./cli.js docs -p 8888", "build": "./cli.js build docs", - "test": "nyc ava -T 20s", + "test": "nyc ava -T 30s", "test:components": "nyc ava test/components.js", "cover": "nyc report --reporter=html --reporter=lcov" }, diff --git a/test/build.js b/test/build.js index 1568e2e..7bdbb49 100644 --- a/test/build.js +++ b/test/build.js @@ -20,7 +20,6 @@ const clean = () => { if (fs.existsSync(output)) { rimraf.sync(output) } - // fs.remove(output) } test.before(clean) @@ -31,15 +30,3 @@ test('static renders', async t => { const html = fs.readFileSync(htmlFile, 'utf8') t.snapshot(html) }) - -test('static uses getInitialProps method', async t => { - const res = await build(options) - const html = fs.readFileSync(propsFile, 'utf8') - t.snapshot(html) -}) - -test.skip('static makes a directory', async t => { - clean() - const res = await build(options) - t.pass() -}) diff --git a/test/snapshots/components.js.md b/test/snapshots/components.js.md index 72d2d06..ec1b0db 100644 --- a/test/snapshots/components.js.md +++ b/test/snapshots/components.js.md @@ -10,6 +10,27 @@ Generated by [AVA](https://ava.li). 'Catch' +## Catch renders error + +> Snapshot 1 + +
+      Error: nope
+    
+ ## CenteredLayout renders with active prop > Snapshot 1 @@ -26,7 +47,7 @@ Generated by [AVA](https://ava.li). [
-        /Users/bjackson/repos/x0/test
+        beep
       
, , - - -## LivePreview renders - -> Snapshot 1 - -
-
-
-

- Hello -

-
-
-
Snapshot 1 - - 'Hello + ] ## Library renders @@ -88,7 +83,33 @@ Generated by [AVA](https://ava.li). hello - + +## LivePreview renders + +> Snapshot 1 + +
+
+
+

+ Hello +

+
+
+
+ +## ScopeProvider renders + +> Snapshot 1 + + 'Hello' ## SidebarLayout renders @@ -99,7 +120,7 @@ Generated by [AVA](https://ava.li). className="sc-hEsumM dahmKO" >
,

, - + ] + +## scope.a renders + +> Snapshot 1 + + + +## scope.a renders a plain link for absolute URLs + +> Snapshot 1 + + + Hello + ## scope.blockquote renders @@ -342,46 +384,4 @@ Generated by [AVA](https://ava.li).
    Snapshot 1 - - Snapshot 1 - -
    -      Error: nope
    -    
    Snapshot 1 - -
    - Hello - \ No newline at end of file + /> diff --git a/test/snapshots/components.js.snap b/test/snapshots/components.js.snap index c410deb27da4a2461d4cee1731c23354d4c765ea..f37a5791a91b34ac957af762175e60be4fb30158 100644 GIT binary patch literal 3184 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