From 78beed25749aaafb417398c69b1758f99022edb9 Mon Sep 17 00:00:00 2001 From: Evan You Date: Tue, 28 Jan 2020 10:28:40 -0500 Subject: [PATCH] build: support source map in build and dev scripts --- .github/contributing.md | 8 +++++++- rollup.config.js | 2 ++ scripts/build.js | 4 +++- scripts/dev.js | 8 ++++++-- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/.github/contributing.md b/.github/contributing.md index 62572bc4..8d1e8d92 100644 --- a/.github/contributing.md +++ b/.github/contributing.md @@ -106,9 +106,13 @@ Multiple formats can be specified as a comma-separated list: yarn build runtime-core -f esm,cjs ``` +#### Build with Source Maps + +Use the `--sourcemap` or `-s` flag to build with source maps. Note this will make the build much slower. + #### Build with Type Declarations -The `--types` flag will generate type declarations during the build and in addition: +The `--types` or `-t` flag will generate type declarations during the build and in addition: - Roll the declarations into a single `.dts` file for each package; - Generate an API report in `/temp/.api.md`. This report contains potential warnings emitted by [api-extractor](https://api-extractor.com/). @@ -129,6 +133,8 @@ $ yarn dev - The `dev` script supports specifying build format via the `-f` flag just like the `build` script. +- The `dev` script also supports the `-s` flag for generating source maps, but it will make rebuilds slower. + ### `yarn test` The `yarn test` script simply calls the `jest` binary, so all [Jest CLI Options](https://jestjs.io/docs/en/cli) can be used. Some examples: diff --git a/rollup.config.js b/rollup.config.js index 29ead12f..bad7672a 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -73,6 +73,7 @@ function createConfig(format, output, plugins = []) { process.exit(1) } + output.sourcemap = !!process.env.SOURCE_MAP output.externalLiveBindings = false const isProductionBuild = @@ -98,6 +99,7 @@ function createConfig(format, output, plugins = []) { cacheRoot: path.resolve(__dirname, 'node_modules/.rts2_cache'), tsconfigOverride: { compilerOptions: { + sourceMap: output.sourcemap, declaration: shouldEmitDeclarations, declarationMap: shouldEmitDeclarations }, diff --git a/scripts/build.js b/scripts/build.js index 98545242..220512e7 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -27,6 +27,7 @@ const targets = args._ const formats = args.formats || args.f const devOnly = args.devOnly || args.d const prodOnly = !devOnly && (args.prodOnly || args.p) +const sourceMap = args.sourcemap || args.s const isRelease = args.release const buildTypes = args.t || args.types || isRelease const buildAllMatching = args.all || args.a @@ -80,7 +81,8 @@ async function build(target) { formats ? `FORMATS:${formats}` : ``, buildTypes ? `TYPES:true` : ``, prodOnly ? `PROD_ONLY:true` : ``, - lean ? `LEAN:true` : `` + lean ? `LEAN:true` : ``, + sourceMap ? `SOURCE_MAP:true` : `` ] .filter(Boolean) .join(',') diff --git a/scripts/dev.js b/scripts/dev.js index 4a6b1e4f..35ee48ed 100644 --- a/scripts/dev.js +++ b/scripts/dev.js @@ -21,6 +21,7 @@ const { fuzzyMatchTarget } = require('./utils') const args = require('minimist')(process.argv.slice(2)) const target = args._.length ? fuzzyMatchTarget(args._)[0] : 'vue' const formats = args.formats || args.f +const sourceMap = args.sourcemap || args.s const commit = execa.sync('git', ['rev-parse', 'HEAD']).stdout.slice(0, 7) execa( @@ -31,8 +32,11 @@ execa( [ `COMMIT:${commit}`, `TARGET:${target}`, - `FORMATS:${formats || 'global'}` - ].join(',') + `FORMATS:${formats || 'global'}`, + sourceMap ? `SOURCE_MAP:true` : `` + ] + .filter(Boolean) + .join(',') ], { stdio: 'inherit'