build: make @vue/shared public
This avoids it being inlined multiple times in esm bundler builds
This commit is contained in:
parent
e1660f4338
commit
bcb2a9b4a6
11
.github/contributing.md
vendored
11
.github/contributing.md
vendored
@ -185,16 +185,7 @@ This repository employs a [monorepo](https://en.wikipedia.org/wiki/Monorepo) set
|
|||||||
|
|
||||||
A [live version](https://vue-next-template-explorer.netlify.com) of the template explorer is also available, which can be used for providing reproductions for compiler bugs. You can also pick the deployment for a specific commit from the [deploy logs](https://app.netlify.com/sites/vue-next-template-explorer/deploys).
|
A [live version](https://vue-next-template-explorer.netlify.com) of the template explorer is also available, which can be used for providing reproductions for compiler bugs. You can also pick the deployment for a specific commit from the [deploy logs](https://app.netlify.com/sites/vue-next-template-explorer/deploys).
|
||||||
|
|
||||||
- `shared`: **Private.** Utilities shared across multiple packages (especially by both runtime and compiler packages). This package is private and not published. Instead, it is **inlined** into the package that imports it during build.
|
- `shared`: Internal utilities shared across multiple packages (especially environment-agnostic utils used by both runtime and compiler packages).
|
||||||
|
|
||||||
- **Note:** if re-exporting a function from `@vue/shared` as a public API, it is necessary to re-define its type before exporting so that the final `d.ts` doesn't attempt to import `@vue/shared`, e.g.:
|
|
||||||
|
|
||||||
```ts
|
|
||||||
import { foo } from '@vue/shared'
|
|
||||||
export const publicFoo = foo as {
|
|
||||||
/* re-define type */
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
- `vue`: The public facing "full build" which includes both the runtime AND the compiler.
|
- `vue`: The public facing "full build" which includes both the runtime AND the compiler.
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
"size": "node scripts/build.js vue runtime-dom size-check -p -f global",
|
"size": "node scripts/build.js vue runtime-dom size-check -p -f global",
|
||||||
"lint": "prettier --write --parser typescript \"packages/**/*.ts?(x)\"",
|
"lint": "prettier --write --parser typescript \"packages/**/*.ts?(x)\"",
|
||||||
"test": "node scripts/build.js vue -f global -d && jest",
|
"test": "node scripts/build.js vue -f global -d && jest",
|
||||||
"test-dts": "node scripts/build.js reactivity runtime-core runtime-dom -dt -f esm-bundler && tsd",
|
"test-dts": "node scripts/build.js shared reactivity runtime-core runtime-dom -dt -f esm-bundler && tsd",
|
||||||
"release": "node scripts/release.js",
|
"release": "node scripts/release.js",
|
||||||
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
|
"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s",
|
||||||
"dev-compiler": "npm-run-all --parallel \"dev template-explorer\" serve",
|
"dev-compiler": "npm-run-all --parallel \"dev template-explorer\" serve",
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/vuejs/vue.git"
|
"url": "git+https://github.com/vuejs/vue-next.git"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"vue"
|
"vue"
|
||||||
@ -26,10 +26,11 @@
|
|||||||
"author": "Evan You",
|
"author": "Evan You",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/vuejs/vue/issues"
|
"url": "https://github.com/vuejs/vue-next/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/vuejs/vue/tree/dev/packages/compiler-core#readme",
|
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/compiler-core#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@vue/shared": "3.0.0-alpha.7",
|
||||||
"@babel/parser": "^7.8.6",
|
"@babel/parser": "^7.8.6",
|
||||||
"@babel/types": "^7.8.6",
|
"@babel/types": "^7.8.6",
|
||||||
"estree-walker": "^0.8.1",
|
"estree-walker": "^0.8.1",
|
||||||
|
@ -50,12 +50,4 @@ export {
|
|||||||
} from './transforms/vSlot'
|
} from './transforms/vSlot'
|
||||||
export { resolveComponentType, buildProps } from './transforms/transformElement'
|
export { resolveComponentType, buildProps } from './transforms/transformElement'
|
||||||
export { processSlotOutlet } from './transforms/transformSlotOutlet'
|
export { processSlotOutlet } from './transforms/transformSlotOutlet'
|
||||||
|
export { generateCodeFrame } from '@vue/shared'
|
||||||
// utility, but need to rewrite typing to avoid dts relying on @vue/shared
|
|
||||||
import { generateCodeFrame as _genCodeFrame } from '@vue/shared'
|
|
||||||
const generateCodeFrame = _genCodeFrame as (
|
|
||||||
source: string,
|
|
||||||
start?: number,
|
|
||||||
end?: number
|
|
||||||
) => string
|
|
||||||
export { generateCodeFrame }
|
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/vuejs/vue.git"
|
"url": "git+https://github.com/vuejs/vue-next.git"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"vue"
|
"vue"
|
||||||
@ -30,10 +30,11 @@
|
|||||||
"author": "Evan You",
|
"author": "Evan You",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/vuejs/vue/issues"
|
"url": "https://github.com/vuejs/vue-next/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/vuejs/vue/tree/dev/packages/compiler-dom#readme",
|
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/compiler-dom#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@vue/shared": "3.0.0-alpha.7",
|
||||||
"@vue/compiler-core": "3.0.0-alpha.7"
|
"@vue/compiler-core": "3.0.0-alpha.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/vuejs/vue.git"
|
"url": "git+https://github.com/vuejs/vue-next.git"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"vue"
|
"vue"
|
||||||
@ -23,13 +23,14 @@
|
|||||||
"author": "Evan You",
|
"author": "Evan You",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/vuejs/vue/issues"
|
"url": "https://github.com/vuejs/vue-next/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/vuejs/vue/tree/dev/packages/compiler-sfc#readme",
|
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/compiler-sfc#readme",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"vue": "3.0.0-alpha.7"
|
"vue": "3.0.0-alpha.7"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@vue/shared": "3.0.0-alpha.7",
|
||||||
"@vue/compiler-core": "3.0.0-alpha.7",
|
"@vue/compiler-core": "3.0.0-alpha.7",
|
||||||
"@vue/compiler-dom": "3.0.0-alpha.7",
|
"@vue/compiler-dom": "3.0.0-alpha.7",
|
||||||
"consolidate": "^0.15.1",
|
"consolidate": "^0.15.1",
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/vuejs/vue.git"
|
"url": "git+https://github.com/vuejs/vue-next.git"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"vue"
|
"vue"
|
||||||
@ -23,10 +23,11 @@
|
|||||||
"author": "Evan You",
|
"author": "Evan You",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/vuejs/vue/issues"
|
"url": "https://github.com/vuejs/vue-next/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/vuejs/vue/tree/dev/packages/compiler-ssr#readme",
|
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/compiler-ssr#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@vue/shared": "3.0.0-alpha.7",
|
||||||
"@vue/compiler-dom": "3.0.0-alpha.7"
|
"@vue/compiler-dom": "3.0.0-alpha.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
"sideEffects": false,
|
"sideEffects": false,
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/vuejs/vue.git"
|
"url": "git+https://github.com/vuejs/vue-next.git"
|
||||||
},
|
},
|
||||||
"buildOptions": {
|
"buildOptions": {
|
||||||
"name": "VueReactivity",
|
"name": "VueReactivity",
|
||||||
@ -30,7 +30,10 @@
|
|||||||
"author": "Evan You",
|
"author": "Evan You",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/vuejs/vue/issues"
|
"url": "https://github.com/vuejs/vue-next/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/vuejs/vue/tree/dev/packages/reactivity#readme"
|
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/reactivity#readme",
|
||||||
|
"dependencies": {
|
||||||
|
"@vue/shared": "3.0.0-alpha.7"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
"sideEffects": false,
|
"sideEffects": false,
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/vuejs/vue.git"
|
"url": "git+https://github.com/vuejs/vue-next.git"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"vue"
|
"vue"
|
||||||
@ -27,10 +27,11 @@
|
|||||||
"author": "Evan You",
|
"author": "Evan You",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/vuejs/vue/issues"
|
"url": "https://github.com/vuejs/vue-next/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/vuejs/vue/tree/dev/packages/runtime-core#readme",
|
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/runtime-core#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@vue/shared": "3.0.0-alpha.7",
|
||||||
"@vue/reactivity": "3.0.0-alpha.7"
|
"@vue/reactivity": "3.0.0-alpha.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -101,15 +101,7 @@ export {
|
|||||||
createCommentVNode,
|
createCommentVNode,
|
||||||
createStaticVNode
|
createStaticVNode
|
||||||
} from './vnode'
|
} from './vnode'
|
||||||
// Since @vue/shared is inlined into final builds,
|
export { toDisplayString, camelize } from '@vue/shared'
|
||||||
// when re-exporting from @vue/shared we need to avoid relying on their original
|
|
||||||
// types so that the bundled d.ts does not attempt to import from it.
|
|
||||||
import {
|
|
||||||
toDisplayString as _toDisplayString,
|
|
||||||
camelize as _camelize
|
|
||||||
} from '@vue/shared'
|
|
||||||
export const toDisplayString = _toDisplayString as (s: unknown) => string
|
|
||||||
export const camelize = _camelize as (s: string) => string
|
|
||||||
|
|
||||||
// For integration with runtime compiler
|
// For integration with runtime compiler
|
||||||
export { registerRuntimeCompiler } from './component'
|
export { registerRuntimeCompiler } from './component'
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/vuejs/vue.git"
|
"url": "git+https://github.com/vuejs/vue-next.git"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"vue"
|
"vue"
|
||||||
@ -33,10 +33,11 @@
|
|||||||
"author": "Evan You",
|
"author": "Evan You",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/vuejs/vue/issues"
|
"url": "https://github.com/vuejs/vue-next/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/vuejs/vue/tree/dev/packages/runtime-dom#readme",
|
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/runtime-dom#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@vue/shared": "3.0.0-alpha.7",
|
||||||
"@vue/runtime-core": "3.0.0-alpha.7",
|
"@vue/runtime-core": "3.0.0-alpha.7",
|
||||||
"csstype": "^2.6.8"
|
"csstype": "^2.6.8"
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
],
|
],
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/vuejs/vue.git"
|
"url": "git+https://github.com/vuejs/vue-next.git"
|
||||||
},
|
},
|
||||||
"buildOptions": {
|
"buildOptions": {
|
||||||
"name": "VueRuntimeTest",
|
"name": "VueRuntimeTest",
|
||||||
@ -26,10 +26,11 @@
|
|||||||
"author": "Evan You",
|
"author": "Evan You",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/vuejs/vue/issues"
|
"url": "https://github.com/vuejs/vue-next/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/vuejs/vue/tree/dev/packages/runtime-test#readme",
|
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/runtime-test#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@vue/shared": "3.0.0-alpha.7",
|
||||||
"@vue/runtime-core": "3.0.0-alpha.7"
|
"@vue/runtime-core": "3.0.0-alpha.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/vuejs/vue.git"
|
"url": "git+https://github.com/vuejs/vue-next.git"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"vue"
|
"vue"
|
||||||
@ -23,13 +23,14 @@
|
|||||||
"author": "Evan You",
|
"author": "Evan You",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/vuejs/vue/issues"
|
"url": "https://github.com/vuejs/vue-next/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/vuejs/vue/tree/dev/packages/server-renderer#readme",
|
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/server-renderer#readme",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"vue": "3.0.0-alpha.7"
|
"vue": "3.0.0-alpha.7"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@vue/shared": "3.0.0-alpha.7",
|
||||||
"@vue/compiler-ssr": "3.0.0-alpha.7"
|
"@vue/compiler-ssr": "3.0.0-alpha.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
7
packages/shared/api-extractor.json
Normal file
7
packages/shared/api-extractor.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"extends": "../../api-extractor.json",
|
||||||
|
"mainEntryPointFilePath": "./dist/packages/<unscopedPackageName>/src/index.d.ts",
|
||||||
|
"dtsRollup": {
|
||||||
|
"untrimmedFilePath": "./dist/<unscopedPackageName>.d.ts"
|
||||||
|
}
|
||||||
|
}
|
7
packages/shared/index.js
Normal file
7
packages/shared/index.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
if (process.env.NODE_ENV === 'production') {
|
||||||
|
module.exports = require('./dist/shared.cjs.prod.js')
|
||||||
|
} else {
|
||||||
|
module.exports = require('./dist/shared.cjs.js')
|
||||||
|
}
|
@ -1,5 +1,31 @@
|
|||||||
{
|
{
|
||||||
"name": "@vue/shared",
|
"name": "@vue/shared",
|
||||||
"version": "3.0.0-alpha.7",
|
"version": "3.0.0-alpha.7",
|
||||||
"private": true
|
"description": "internal utils shared across @vue packages",
|
||||||
|
"main": "index.js",
|
||||||
|
"module": "dist/shared.esm-bundler.js",
|
||||||
|
"types": "dist/shared.d.ts",
|
||||||
|
"files": [
|
||||||
|
"index.js",
|
||||||
|
"dist"
|
||||||
|
],
|
||||||
|
"buildOptions": {
|
||||||
|
"formats": [
|
||||||
|
"esm-bundler",
|
||||||
|
"cjs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/vuejs/vue-next.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"vue"
|
||||||
|
],
|
||||||
|
"author": "Evan You",
|
||||||
|
"license": "MIT",
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/vuejs/vue-next/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/shared#readme"
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/vuejs/vue.git"
|
"url": "git+https://github.com/vuejs/vue-next.git"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"vue"
|
"vue"
|
||||||
@ -32,10 +32,11 @@
|
|||||||
"author": "Evan You",
|
"author": "Evan You",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/vuejs/vue/issues"
|
"url": "https://github.com/vuejs/vue-next/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/vuejs/vue/tree/dev/packages/vue#readme",
|
"homepage": "https://github.com/vuejs/vue-next/tree/master/packages/vue#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@vue/shared": "3.0.0-alpha.7",
|
||||||
"@vue/compiler-dom": "3.0.0-alpha.7",
|
"@vue/compiler-dom": "3.0.0-alpha.7",
|
||||||
"@vue/runtime-dom": "3.0.0-alpha.7"
|
"@vue/runtime-dom": "3.0.0-alpha.7"
|
||||||
},
|
},
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import fs from 'fs'
|
|
||||||
import path from 'path'
|
import path from 'path'
|
||||||
import ts from 'rollup-plugin-typescript2'
|
import ts from 'rollup-plugin-typescript2'
|
||||||
import replace from '@rollup/plugin-replace'
|
import replace from '@rollup/plugin-replace'
|
||||||
@ -16,10 +15,6 @@ const resolve = p => path.resolve(packageDir, p)
|
|||||||
const pkg = require(resolve(`package.json`))
|
const pkg = require(resolve(`package.json`))
|
||||||
const packageOptions = pkg.buildOptions || {}
|
const packageOptions = pkg.buildOptions || {}
|
||||||
|
|
||||||
const knownExternals = fs.readdirSync(packagesDir).filter(p => {
|
|
||||||
return p !== '@vue/shared'
|
|
||||||
})
|
|
||||||
|
|
||||||
// ensure TS checks only once for each build
|
// ensure TS checks only once for each build
|
||||||
let hasTSChecked = false
|
let hasTSChecked = false
|
||||||
|
|
||||||
@ -112,9 +107,7 @@ function createConfig(format, output, plugins = []) {
|
|||||||
format === 'esm-bundler-runtime' ? `src/runtime.ts` : `src/index.ts`
|
format === 'esm-bundler-runtime' ? `src/runtime.ts` : `src/index.ts`
|
||||||
|
|
||||||
const external =
|
const external =
|
||||||
isGlobalBuild || isRawESMBuild
|
isGlobalBuild || isRawESMBuild ? [] : Object.keys(pkg.dependencies || {})
|
||||||
? []
|
|
||||||
: knownExternals.concat(Object.keys(pkg.dependencies || []))
|
|
||||||
|
|
||||||
const nodePlugins = packageOptions.enableNonBrowserBranches
|
const nodePlugins = packageOptions.enableNonBrowserBranches
|
||||||
? [
|
? [
|
||||||
|
Loading…
Reference in New Issue
Block a user