From 0fd5e112bf8a06a77d671c6ab81825bb0e7e88cd Mon Sep 17 00:00:00 2001 From: Loic Guychard Date: Mon, 7 Jan 2019 13:35:12 +0100 Subject: [PATCH] feat: symlink dist/package.json -> package.json when running serve (#41) --- src/cli.ts | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/cli.ts b/src/cli.ts index b4eb5a378..f13820ed9 100755 --- a/src/cli.ts +++ b/src/cli.ts @@ -185,7 +185,8 @@ async function main(): Promise { tslint: "tslint -p tsconfig.json './src/**/*.ts'", typecheck: 'tsc -p tsconfig.json', build: `parcel build --out-file dist/${name}.js src/${name}.ts`, - serve: `parcel serve --no-hmr --out-file dist/${name}.js src/${name}.ts`, + 'symlink-package': 'node dev/symlinkPackage.js', + serve: `npm run symlink-package && parcel serve --no-hmr --out-file dist/${name}.js src/${name}.ts`, 'watch:typecheck': 'tsc -p tsconfig.json -w', 'watch:build': 'tsc -p tsconfig.dist.json -w', 'sourcegraph:prepublish': 'npm run build', @@ -200,6 +201,25 @@ async function main(): Promise { await writeFile('package.json', JSON.stringify(packageJson, null, 2)) } + console.log('📂 Creating dev directory') + await mkdir('dev') + await writeFile('dev/symlinkPackage.js', [ + "const createSymlink = require('create-symlink')", + "const { existsSync } = require('fs')", + "const mkdirp = require('mkdirp-promise')", + "const { resolve } = require('path')", + '', + "mkdirp('dist').then(async () => {", + " if (!existsSync('./dist/package.json')) {", + " await createSymlink(resolve('./package.json'), resolve('./dist/package.json'))", + ' }', + ' process.exit(0)', + '}).catch(err => {', + ' console.error(err)', + ' process.exit(1)', + '})', + ].join('\n')) + try { console.log('📂 Creating src directory') await mkdir('src') @@ -243,6 +263,8 @@ async function main(): Promise { 'tslint', '@sourcegraph/tslint-config', '@sourcegraph/tsconfig', + 'create-symlink', + 'mkdirp-promise', ], { stdio: 'inherit' } )