Bläddra i källkod

build: support source map in build and dev scripts

Evan You 6 år sedan
förälder
incheckning
78beed2574
4 ändrade filer med 18 tillägg och 4 borttagningar
  1. 7 1
      .github/contributing.md
  2. 2 0
      rollup.config.js
  3. 3 1
      scripts/build.js
  4. 6 2
      scripts/dev.js

+ 7 - 1
.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 `<projectRoot>/temp/<packageName>.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:

+ 2 - 0
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
       },

+ 3 - 1
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(',')

+ 6 - 2
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'