From 210c3a1745f981753d48ed4f1e1eab76dadd2441 Mon Sep 17 00:00:00 2001 From: Pedro Nauck Date: Wed, 14 Nov 2018 22:01:38 -0200 Subject: [PATCH] fix(docz-core): use assets from public folder --- packages/docz-core/src/Bundler.ts | 5 +++-- packages/docz-core/src/commands/args.ts | 5 +++++ packages/docz-core/src/webpack/build.ts | 13 ++++++++----- packages/docz-core/src/webpack/devserver.ts | 5 +++-- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/packages/docz-core/src/Bundler.ts b/packages/docz-core/src/Bundler.ts index 83771d3fa..108701e13 100644 --- a/packages/docz-core/src/Bundler.ts +++ b/packages/docz-core/src/Bundler.ts @@ -23,7 +23,7 @@ export interface BundlerServer { } export type ConfigFn = (babelrc: BabelRC) => Promise -export type BuildFn = (config: C, dist: string) => void +export type BuildFn = (config: C, dist: string, publicDir: string) => void export type ServerFnReturn = BundlerServer | Promise export type ServerFn = (config: C, hooks: ServerHooks) => ServerFnReturn @@ -77,6 +77,7 @@ export class Bundler { public async build(config: C): Promise { const dist = paths.getDist(this.args.dest) + const publicDir = path.join(paths.root, this.args.public) if (paths.root === path.resolve(dist)) { logger.fatal( @@ -87,7 +88,7 @@ export class Bundler { process.exit(1) } - await this.builder(config, dist) + await this.builder(config, dist, publicDir) } private mountConfig(config: C, env: Env): any { diff --git a/packages/docz-core/src/commands/args.ts b/packages/docz-core/src/commands/args.ts index add3faa82..643da8c0b 100644 --- a/packages/docz-core/src/commands/args.ts +++ b/packages/docz-core/src/commands/args.ts @@ -52,6 +52,7 @@ export interface Argv { src: string files: string ignore: string[] + public: string dest: string editBranch: string config: string @@ -114,6 +115,10 @@ export const args = (env: Env) => (yargs: any) => { type: 'array', default: getEnv('docz.ignore', []), }) + yargs.positional('public', { + type: 'string', + default: getEnv('docz.public', '/public'), + }) yargs.positional('dest', { alias: 'd', type: 'string', diff --git a/packages/docz-core/src/webpack/build.ts b/packages/docz-core/src/webpack/build.ts index ab4217a68..6226a3f81 100644 --- a/packages/docz-core/src/webpack/build.ts +++ b/packages/docz-core/src/webpack/build.ts @@ -15,9 +15,12 @@ const WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024 const hasCiEnvVar = () => envDotProp.get('ci', false, { parse: true }) -const copyPublicFolder = async (dest: string): Promise => { - if (await fs.pathExists(paths.appPublic)) { - await fs.copySync(paths.appPublic, paths.distPublic(dest), { +const copyPublicFolder = async ( + dest: string, + publicDir: string +): Promise => { + if (await fs.pathExists(publicDir)) { + await fs.copy(publicDir, paths.distPublic(dest), { dereference: true, filter: file => file !== paths.indexHtml, }) @@ -108,13 +111,13 @@ const onError = (err: Error) => { process.exit(1) } -export const build = async (config: CFG, dist: string) => { +export const build = async (config: CFG, dist: string, publicDir: string) => { try { await fs.ensureDir(dist) const previousFileSizes = await measureFileSizesBeforeBuild(dist) await fs.emptyDir(dist) - await copyPublicFolder(dist) + await copyPublicFolder(dist, publicDir) const result = await builder(config, previousFileSizes) onSuccess(dist, result) diff --git a/packages/docz-core/src/webpack/devserver.ts b/packages/docz-core/src/webpack/devserver.ts index 5ec7b7de5..e2302afec 100644 --- a/packages/docz-core/src/webpack/devserver.ts +++ b/packages/docz-core/src/webpack/devserver.ts @@ -20,6 +20,7 @@ export const devServerConfig = ( ) => { const nonExistentDir = path.resolve(__dirname, 'non-existent') const logLevel = (level: string) => (args.debug ? 'debug' : level) + const publicDir = path.join(paths.root, args.public) return { config, @@ -42,8 +43,8 @@ export const devServerConfig = ( app.use(range) - if (fs.existsSync(paths.appPublic)) { - app.use(mount(args.base, serveStatic(paths.appPublic))) + if (fs.existsSync(publicDir)) { + app.use(mount(path.join(args.base, '/public'), serveStatic(publicDir))) } app.use(