chore: update build scripts (#69)

This commit is contained in:
pooya parsa 2021-04-09 15:48:39 +02:00 committed by GitHub
parent 030327b75f
commit c351574043
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
33 changed files with 384 additions and 869 deletions

View File

@ -37,6 +37,10 @@ jobs:
if: steps.cache.outputs.cache-hit != 'true' if: steps.cache.outputs.cache-hit != 'true'
run: yarn # --immutable run: yarn # --immutable
- name: Stub
run: yarn stub
- name: Lint - name: Lint
run: yarn lint run: yarn lint

View File

@ -5,42 +5,28 @@
"packages/*" "packages/*"
], ],
"scripts": { "scripts": {
"link": "lerna link", "build": "FORCE_COLOR=1 lerna run prepack --stream --no-prefix",
"build": "jiti ./scripts/build-all", "stub": "lerna run prepack -- --stub",
"stub": "yarn build --stub", "release": "yarn && yarn build && FORCE_COLOR=1 lerna publish -m \"chore: release\" && yarn stub",
"gentypes": "yarn workspace @nuxt/kit jiti ./scripts/gentypes",
"release": "yarn build && lerna publish -m \"chore: release\" && yarn stub",
"nu": "./node_modules/.bin/nu", "nu": "./node_modules/.bin/nu",
"play": "yarn run nu dev playground", "play": "yarn run nu dev playground",
"lint": "yarn gentypes && eslint --ext .vue,.ts,.js .", "lint": "eslint --ext .vue,.ts,.js .",
"test": "yarn lint",
"postinstall": "yarn stub", "postinstall": "yarn stub",
"version": "yarn && git add yarn.lock" "version": "yarn && git add yarn.lock"
}, },
"resolutions": {
"esbuild": "0.10.2"
},
"devDependencies": { "devDependencies": {
"@nuxtjs/eslint-config": "^6.0.0", "@nuxtjs/eslint-config": "^6.0.0",
"@nuxtjs/eslint-config-typescript": "^6.0.0", "@nuxtjs/eslint-config-typescript": "^6.0.0",
"@rollup/plugin-alias": "^3.1.2",
"@rollup/plugin-commonjs": "^18.0.0",
"@rollup/plugin-node-resolve": "^11.2.1",
"@types/jest": "^26.0.22", "@types/jest": "^26.0.22",
"@types/node": "^14.14.37", "@types/node": "^14.14.37",
"@types/rimraf": "^3.0.0",
"chalk": "^4.1.0",
"defu": "^3.2.2",
"esbuild": "^0.10.0",
"eslint": "^7.23.0", "eslint": "^7.23.0",
"execa": "^5.0.0",
"jest": "^26.6.3", "jest": "^26.6.3",
"jiti": "^1.6.4", "jiti": "^1.6.4",
"lerna": "^4.0.0", "lerna": "^4.0.0",
"mkdist": "^0.1.3", "mkdist": "^0.1.3",
"pretty-bytes": "^5.6.0",
"rimraf": "^3.0.2",
"rollup": "^2.44.0",
"rollup-plugin-dts": "^3.0.1",
"rollup-plugin-esbuild": "^3.0.2",
"standard-version": "^9.1.1",
"ts-jest": "^26.5.4", "ts-jest": "^26.5.4",
"typescript": "^4.2.3" "typescript": "^4.2.3"
} }

View File

@ -0,0 +1,14 @@
import { BuildConfig } from 'unbuild'
export default <BuildConfig>{
declaration: false,
entries: [
{ input: 'src/', name: 'app' }
],
dependencies: [
'@vueuse/head',
'ohmyfetch',
'vue-router',
'vuex5'
]
}

View File

@ -1,5 +1,5 @@
const { resolve } = require('path') const { resolve } = require('path')
module.exports = { module.exports = {
appDir: resolve(__dirname, 'dist') appDir: resolve(__dirname, 'dist/app')
} }

View File

@ -3,12 +3,19 @@
"version": "0.2.1", "version": "0.2.1",
"repository": "nuxt/framework", "repository": "nuxt/framework",
"license": "MIT", "license": "MIT",
"main": "./dist/index.js", "main": "./dist/app/index.js",
"module": "./dist/index.js", "module": "./dist/app/index.js",
"types": "./dist/index.d.ts",
"files": [ "files": [
"dist", "dist",
"meta.js" "meta.js"
], ],
"scripts": {
"prepack": "unbuild"
},
"devDependencies": {
"unbuild": "^0.1.11"
},
"dependencies": { "dependencies": {
"@vueuse/head": "^0.5.1", "@vueuse/head": "^0.5.1",
"hookable": "^4.4.1", "hookable": "^4.4.1",
@ -16,19 +23,5 @@
"vue": "^3.0.11", "vue": "^3.0.11",
"vue-router": "^4.0.6", "vue-router": "^4.0.6",
"vuex5": "^0.5.0-testing.3" "vuex5": "^0.5.0-testing.3"
},
"build": {
"entries": {
"index": {
"distDir": ".gen"
},
"/": {}
},
"dependencies": [
"@vueuse/head",
"ohmyfetch",
"vue-router",
"vuex5"
]
} }
} }

View File

@ -1,4 +1,3 @@
export { useNuxt } from './nuxt/composables'
export * from './nuxt' export * from './nuxt'
export * from './shim' export * from './shim'
export * from './composables'

View File

@ -1,7 +1,6 @@
import { App, getCurrentInstance } from 'vue'
import Hookable from 'hookable' import Hookable from 'hookable'
import type { App } from 'vue' import { defineGetter } from './utils'
import { defineGetter } from '../utils'
import { callWithNuxt } from './composables'
export interface Nuxt { export interface Nuxt {
app: App app: App
@ -93,3 +92,37 @@ export async function applyPlugins (nuxt: Nuxt, plugins: Plugin[]) {
await applyPlugin(nuxt, plugin) await applyPlugin(nuxt, plugin)
} }
} }
let currentNuxtInstance: Nuxt | null
export const setNuxtInstance = (nuxt: Nuxt | null) => {
currentNuxtInstance = nuxt
}
/**
* Ensures that the setup function passed in has access to the Nuxt instance via `useNuxt`.
* @param nuxt A Nuxt instance
* @param setup The function to call
*/
export async function callWithNuxt (nuxt: Nuxt, setup: () => any) {
setNuxtInstance(nuxt)
const p = setup()
setNuxtInstance(null)
await p
}
/**
* Returns the current Nuxt instance.
*/
export function useNuxt (): Nuxt {
const vm = getCurrentInstance()
if (!vm) {
if (!currentNuxtInstance) {
throw new Error('nuxt instance unavailable')
}
return currentNuxtInstance
}
return vm.appContext.app.$nuxt
}

View File

@ -1,36 +0,0 @@
import { getCurrentInstance } from 'vue'
import type { Nuxt } from '../nuxt'
let currentNuxtInstance: Nuxt | null
export const setNuxtInstance = (nuxt: Nuxt | null) => {
currentNuxtInstance = nuxt
}
/**
* Ensures that the setup function passed in has access to the Nuxt instance via `useNuxt`.
* @param nuxt A Nuxt instance
* @param setup The function to call
*/
export async function callWithNuxt (nuxt: Nuxt, setup: () => any) {
setNuxtInstance(nuxt)
const p = setup()
setNuxtInstance(null)
await p
}
/**
* Returns the current Nuxt instance.
*/
export function useNuxt (): Nuxt {
const vm = getCurrentInstance()
if (!vm) {
if (!currentNuxtInstance) {
throw new Error('nuxt instance unavailable')
}
return currentNuxtInstance
}
return vm.appContext.app.$nuxt
}

View File

@ -1,5 +1,5 @@
import type { Plugin } from '@nuxt/app'
import { createHead, renderHeadToString } from '@vueuse/head' import { createHead, renderHeadToString } from '@vueuse/head'
import type { Plugin } from '@nuxt/app'
import { Head, Html, Body, Title, Meta, Link, Script, Style } from './head' import { Head, Html, Body, Title, Meta, Link, Script, Style } from './head'
export default <Plugin> function head (nuxt) { export default <Plugin> function head (nuxt) {

View File

@ -6,7 +6,9 @@ import {
RouterLink RouterLink
} from 'vue-router' } from 'vue-router'
import type { Plugin } from '@nuxt/app' import type { Plugin } from '@nuxt/app'
// @ts-ignore
import routes from 'nuxt/build/routes' import routes from 'nuxt/build/routes'
// @ts-ignore
import NuxtPage from './NuxtPage.vue' import NuxtPage from './NuxtPage.vue'
export default <Plugin> function router (nuxt) { export default <Plugin> function router (nuxt) {

View File

@ -1,6 +1,6 @@
import { createVuex, defineStore, useStore } from 'vuex5/dist/vuex.esm' import { createVuex, defineStore, useStore } from 'vuex5/dist/vuex.esm'
import type { Plugin } from '@nuxt/app' import type { Plugin } from '@nuxt/app'
import { useHydration } from 'nuxt/app/composables' import { useHydration } from '../composables'
export default <Plugin> function ({ app }) { export default <Plugin> function ({ app }) {
const vuex = createVuex({ }) const vuex = createVuex({ })

View File

@ -0,0 +1,11 @@
import type { BuildConfig } from 'unbuild'
export default <BuildConfig>{
declaration: false,
entries: [
'src/index'
],
externals: [
'nuxt3'
]
}

View File

@ -9,18 +9,14 @@
"nuxt": "./bin/nuxt.js", "nuxt": "./bin/nuxt.js",
"nuxt-cli": "./bin/nuxt.js" "nuxt-cli": "./bin/nuxt.js"
}, },
"scripts": {
"prepack": "unbuild"
},
"devDependencies": {
"unbuild": "^0.1.11"
},
"files": [ "files": [
"bin", "bin",
"dist" "dist"
], ]
"build": {
"externals": [
"nuxt3"
],
"entries": {
"index": {
"format": "cjs"
}
}
}
} }

View File

@ -13,7 +13,8 @@ async function _main () {
const isDev = cmd === 'dev' const isDev = cmd === 'dev'
const rootDir = resolve(process.cwd(), args[1] || '.') const rootDir = resolve(process.cwd(), args[1] || '.')
const { loadNuxt, build } = await import('nuxt3') const pkg = 'nuxt3'
const { loadNuxt, build } = require(pkg)
const nuxt = await loadNuxt({ const nuxt = await loadNuxt({
for: isDev ? 'dev' : 'build', for: isDev ? 'dev' : 'build',

View File

@ -0,0 +1,16 @@
import type { BuildConfig } from 'unbuild'
export default <BuildConfig>{
declaration: true,
entries: [
{
input: 'src/config/schema/index',
name: 'config',
builder: 'untyped',
defaults: {
rootDir: '<rootDir>'
}
},
'src/index'
]
}

View File

@ -8,6 +8,12 @@
"files": [ "files": [
"dist" "dist"
], ],
"scripts": {
"prepack": "unbuild"
},
"devDependencies": {
"unbuild": "^0.1.11"
},
"dependencies": { "dependencies": {
"consola": "^2.15.3", "consola": "^2.15.3",
"create-require": "^1.1.1", "create-require": "^1.1.1",
@ -22,13 +28,5 @@
"unctx": "^0.0.3", "unctx": "^0.0.3",
"untyped": "^0.2.4", "untyped": "^0.2.4",
"upath": "^2.0.1" "upath": "^2.0.1"
},
"build": {
"prebuild": "jiti ./scripts/gentypes",
"entries": {
"index": {
"format": "cjs"
}
}
} }
} }

View File

@ -1,19 +0,0 @@
import { resolve } from 'path'
import { mkdir, writeFile } from 'fs/promises'
import { resolveSchema, generateTypes, generateMarkdown } from 'untyped'
async function main () {
const genDir = resolve(__dirname, '../.gen')
const srcConfig = await import('../src/config/schema').then(r => r.default)
const defaults = { rootDir: '/<dir>/' }
const schema = resolveSchema(srcConfig, defaults)
await mkdir(genDir).catch(() => { })
await writeFile(resolve(genDir, 'config.md'), generateMarkdown(schema))
await writeFile(resolve(genDir, 'config.schema.json'), JSON.stringify(schema, null, 2))
await writeFile(resolve(genDir, 'config.defaults.json'), JSON.stringify(defaults, null, 2))
await writeFile(resolve(genDir, 'config.d.ts'), 'export ' + generateTypes(schema, 'ConfigSchema'))
}
main().catch(console.error)

View File

@ -1,4 +1,4 @@
import { ConfigSchema } from '../../.gen/config' import { ConfigSchema } from '../../.gen/config/config'
import { ModuleInstallOptions } from './module' import { ModuleInstallOptions } from './module'
import { NuxtHooks } from './hooks' import { NuxtHooks } from './hooks'

View File

@ -0,0 +1,23 @@
import type { BuildConfig } from 'unbuild'
export default <BuildConfig>{
declaration: true,
entries: [
'src/index',
'src/compat',
{ input: 'src/runtime/', format: 'esm', declaration: false }
],
dependencies: [
'@cloudflare/kv-asset-handler',
'@netlify/functions',
'@nuxt/devalue',
'connect',
'destr',
'ohmyfetch',
'ora',
'vue-bundle-renderer',
'vue-server-renderer',
'@vue/server-renderer',
'vue'
]
}

View File

@ -7,28 +7,8 @@
"dist", "dist",
"compat.js" "compat.js"
], ],
"build": { "scripts": {
"entries": { "prepack": "unbuild"
"index": {
"format": "cjs"
},
"compat": {
"format": "cjs"
},
"runtime/": {}
},
"dependencies": [
"@cloudflare/kv-asset-handler",
"@nuxt/devalue",
"connect",
"destr",
"ohmyfetch",
"ora",
"vue-bundle-renderer",
"vue-server-renderer",
"@vue/server-renderer",
"vue"
]
}, },
"dependencies": { "dependencies": {
"@cloudflare/kv-asset-handler": "^0.1.1", "@cloudflare/kv-asset-handler": "^0.1.1",
@ -92,6 +72,7 @@
"@types/globby": "^9.1.0", "@types/globby": "^9.1.0",
"@types/http-proxy": "^1.17.5", "@types/http-proxy": "^1.17.5",
"@types/node-fetch": "^2.5.9", "@types/node-fetch": "^2.5.9",
"@types/serve-static": "^1.13.9" "@types/serve-static": "^1.13.9",
"unbuild": "^0.1.11"
} }
} }

View File

@ -0,0 +1,14 @@
import type { BuildConfig } from 'unbuild'
export default <BuildConfig>{
declaration: false,
entries: [
'src/index'
],
dependencies: [
'@nuxt/app',
'@nuxt/vite-builder',
'@nuxt/webpack-builder',
'nuxt-cli'
]
}

View File

@ -7,18 +7,8 @@
"files": [ "files": [
"dist" "dist"
], ],
"build": { "scripts": {
"entries": { "prepack": "unbuild"
"index": {
"format": "cjs"
}
},
"dependencies": [
"@nuxt/app",
"@nuxt/vite-builder",
"@nuxt/webpack-builder",
"nuxt-cli"
]
}, },
"dependencies": { "dependencies": {
"@nuxt/app": "^0.2.1", "@nuxt/app": "^0.2.1",
@ -43,6 +33,7 @@
"devDependencies": { "devDependencies": {
"@types/fs-extra": "^9.0.10", "@types/fs-extra": "^9.0.10",
"@types/hash-sum": "^1.0.0", "@types/hash-sum": "^1.0.0",
"@types/lodash": "^4.14.168" "@types/lodash": "^4.14.168",
"unbuild": "^0.1.11"
} }
} }

View File

@ -1,5 +1,5 @@
import Hookable from 'hookable' import Hookable from 'hookable'
import { loadNuxtConfig, LoadNuxtConfigOptions, Nuxt, NuxtOptions, installModule } from '@nuxt/kit' import { loadNuxtConfig, LoadNuxtConfigOptions, Nuxt, NuxtOptions, installModule, NuxtConfig } from '@nuxt/kit'
import { initNitro } from './nitro' import { initNitro } from './nitro'
export function createNuxt (options: NuxtOptions): Nuxt { export function createNuxt (options: NuxtOptions): Nuxt {
@ -39,6 +39,8 @@ async function initNuxt (nuxt: Nuxt) {
export interface LoadNuxtOptions extends LoadNuxtConfigOptions { export interface LoadNuxtOptions extends LoadNuxtConfigOptions {
for?: 'dev' | 'build' for?: 'dev' | 'build'
rootDir?: string
config?: NuxtConfig
} }
export async function loadNuxt (loadOpts: LoadNuxtOptions = {}): Promise<Nuxt> { export async function loadNuxt (loadOpts: LoadNuxtOptions = {}): Promise<Nuxt> {

View File

@ -0,0 +1,13 @@
import type { BuildConfig } from 'unbuild'
export default <BuildConfig>{
declaration: false,
entries: [
'src/index'
],
dependencies: [
'@nuxt/kit',
'@vue/compiler-sfc',
'vue'
]
}

View File

@ -7,17 +7,11 @@
"files": [ "files": [
"dist" "dist"
], ],
"build": { "scripts": {
"entries": { "prepack": "unbuild"
"index": { },
"format": "cjs" "devDependencies": {
} "unbuild": "^0.1.11"
},
"dependencies": [
"@nuxt/kit",
"@vue/compiler-sfc",
"vue"
]
}, },
"dependencies": { "dependencies": {
"@nuxt/kit": "^0.2.0", "@nuxt/kit": "^0.2.0",

View File

@ -0,0 +1,25 @@
import type { BuildConfig } from 'unbuild'
export default <BuildConfig>{
declaration: false,
entries: [
'src/index'
],
dependencies: [
'@nuxt/kit',
'@vue/compiler-sfc',
'@vue/babel-preset-jsx',
'postcss',
'postcss-import-resolver',
'postcss-loader',
'babel-loader',
'vue-loader',
'css-loader',
'file-loader',
'style-resources-loader',
'url-loader',
'vue-style-loader',
'@babel/core',
'vue'
]
}

View File

@ -7,29 +7,8 @@
"files": [ "files": [
"dist" "dist"
], ],
"build": { "scripts": {
"entries": { "prepack": "unbuild"
"index": {
"format": "cjs"
}
},
"dependencies": [
"@nuxt/kit",
"@vue/compiler-sfc",
"@vue/babel-preset-jsx",
"postcss",
"postcss-import-resolver",
"postcss-loader",
"babel-loader",
"vue-loader",
"css-loader",
"file-loader",
"style-resources-loader",
"url-loader",
"vue-style-loader",
"@babel/core",
"vue"
]
}, },
"dependencies": { "dependencies": {
"@babel/core": "^7.13.14", "@babel/core": "^7.13.14",
@ -70,6 +49,7 @@
"@types/terser-webpack-plugin": "^5.0.3", "@types/terser-webpack-plugin": "^5.0.3",
"@types/webpack-bundle-analyzer": "^3.9.2", "@types/webpack-bundle-analyzer": "^3.9.2",
"@types/webpack-dev-middleware": "^4.1.2", "@types/webpack-dev-middleware": "^4.1.2",
"@types/webpack-hot-middleware": "^2.25.4" "@types/webpack-hot-middleware": "^2.25.4",
"unbuild": "^0.1.11"
} }
} }

View File

@ -11,7 +11,7 @@
</template> </template>
<script> <script>
import { defineNuxtComponent, asyncData } from 'nuxt/app/composables' import { defineNuxtComponent, asyncData } from '@nuxt/app'
const waitFor = (ms = 0) => new Promise(resolve => setTimeout(resolve, ms)) const waitFor = (ms = 0) => new Promise(resolve => setTimeout(resolve, ms))
export default defineNuxtComponent({ export default defineNuxtComponent({

View File

@ -11,7 +11,7 @@
</template> </template>
<script> <script>
import { useAsyncData } from 'nuxt/app/composables' import { useAsyncData } from '@nuxt/app'
const waitFor = (ms = 0) => new Promise(resolve => setTimeout(resolve, ms)) const waitFor = (ms = 0) => new Promise(resolve => setTimeout(resolve, ms))
export default { export default {

View File

@ -1,18 +0,0 @@
import { readdir } from 'fs/promises'
import { resolve } from 'upath'
import { build } from './build'
async function main () {
const pkgsDir = resolve(__dirname, '../packages')
const pkgs = await readdir(pkgsDir)
const stub = process.argv.includes('--stub')
for (const pkg of pkgs) {
const rootDir = resolve(pkgsDir, pkg)
process.chdir(rootDir)
await build(rootDir, stub)
}
}
main().catch(console.error)

View File

@ -1,261 +0,0 @@
import { promisify } from 'util'
import { resolve, relative, dirname } from 'path'
import Module from 'module'
import { writeFile, mkdir, unlink, symlink } from 'fs/promises'
import chalk from 'chalk'
import consola from 'consola'
import rimraf from 'rimraf'
import { RollupOptions, OutputOptions, OutputChunk, rollup } from 'rollup'
import commonjs from '@rollup/plugin-commonjs'
import nodeResolve from '@rollup/plugin-node-resolve'
import alias from '@rollup/plugin-alias'
import esbuild from 'rollup-plugin-esbuild'
import { mkdist } from 'mkdist'
import prettyBytes from 'pretty-bytes'
import execa from 'execa'
import dts from 'rollup-plugin-dts'
interface BuildEntry {
name: string
input: string
output: string
bundle: boolean
srcDir: string
distDir: string
format: 'esm' | 'cjs'
}
interface BuildContext {
rootDir: string
entries: BuildEntry[]
externals: string[]
}
export async function build (rootDir: string, stub: boolean) {
const ctx: BuildContext = {
rootDir,
entries: [],
externals: [...Module.builtinModules]
}
const pkg = require(resolve(ctx.rootDir, 'package.json'))
const buildOptions = pkg.build || {}
if (buildOptions.entries) {
if (!Array.isArray(buildOptions.entries)) {
buildOptions.entries = Object.entries(buildOptions.entries)
}
ctx.entries.push(...buildOptions.entries.map(entry => resolveEntry(entry)))
}
if (pkg.dependencies) {
ctx.externals.push(...Object.keys(pkg.dependencies))
}
if (buildOptions.externals) {
ctx.externals.push(...buildOptions.externals)
}
const distDir = resolve(ctx.rootDir, 'dist')
await unlink(distDir).catch(() => {})
await promisify(rimraf)(distDir)
if (buildOptions.prebuild) {
const [cmd, ...args] = buildOptions.prebuild.split(' ')
await execa(cmd, args)
}
if (stub) {
const stubbed: string[] = []
for (const entry of ctx.entries) {
if (entry.bundle) {
const input = resolve(ctx.rootDir, entry.input)
stubbed.push(entry.output)
const output = resolve(ctx.rootDir, entry.output) + '.js'
await mkdir(dirname(output)).catch(() => { })
const cjsStub = `module.exports = require('jiti')()('${input}')`
const esStub = `export * from '${input}'`
await writeFile(output, entry.format === 'cjs' ? cjsStub : esStub)
await writeFile(output.replace('.js', '.d.ts'), esStub)
} else {
const outDir = resolve(ctx.rootDir, entry.output)
const srcDir = resolve(ctx.rootDir, entry.input)
await unlink(outDir).catch(() => { })
await symlink(srcDir, outDir)
}
}
return
}
consola.info(chalk.cyan(`Building ${pkg.name}`))
if (process.env.DEBUG) {
consola.info(`
${chalk.bold('Root dir:')} ${ctx.rootDir}
${chalk.bold('Entries:')}
${ctx.entries.map(entry => ' ' + dumpObject(entry)).join('\n')}
`)
}
const rollupOptions = getRollupOptions(ctx)
const buildEntries: { path: string, bytes?: number, exports?: string[], chunks?: string[] }[] = []
const usedImports = new Set<string>()
if (rollupOptions) {
const buildResult = await rollup(rollupOptions)
const outputOptions = rollupOptions.output
const { output } = await buildResult.write(outputOptions)
for (const entry of output.filter(e => e.type === 'chunk') as OutputChunk[]) {
for (const id of entry.imports) {
usedImports.add(id)
}
if (entry.isEntry) {
buildEntries.push({
path: relative(ctx.rootDir, resolve(outputOptions.dir, entry.fileName)),
bytes: entry.code.length * 4,
exports: entry.exports
})
}
}
// Types
rollupOptions.plugins = rollupOptions.plugins || []
rollupOptions.plugins.push(dts())
const typesBuild = await rollup(rollupOptions)
await typesBuild.write(outputOptions)
}
for (const entry of ctx.entries.filter(e => !e.bundle)) {
const { writtenFiles } = await mkdist({
rootDir: ctx.rootDir,
srcDir: entry.input,
distDir: entry.output,
format: entry.format
})
buildEntries.push({
path: relative(ctx.rootDir, entry.output),
chunks: [`${writtenFiles.length} files`]
})
}
consola.success(chalk.green('Build succeed for ' + pkg.name))
for (const entry of buildEntries) {
consola.log(` ${chalk.bold(entry.path)} (` + [
entry.bytes && `size: ${chalk.cyan(prettyBytes(entry.bytes))}`,
entry.exports && `exports: ${chalk.gray(entry.exports.join(', '))}`,
entry.chunks && `chunks: ${chalk.gray(entry.chunks.join(', '))}`
].filter(Boolean).join(', ') + ')')
}
if (rollupOptions) {
const usedDependencies = new Set<string>()
const unusedDependencies = new Set<string>(Object.keys(pkg.dependencies || {}))
const implicitDependnecies = new Set<string>()
for (const id of usedImports) {
unusedDependencies.delete(id)
usedDependencies.add(id)
}
if (Array.isArray(buildOptions.dependencies)) {
for (const id of buildOptions.dependencies) {
unusedDependencies.delete(id)
}
}
for (const id of usedDependencies) {
if (
!ctx.externals.includes(id) &&
!id.startsWith('chunks/') &&
!ctx.externals.includes(id.split('/')[0]) // lodash/get
) {
implicitDependnecies.add(id)
}
}
if (unusedDependencies.size) {
consola.warn('Potential unused dependencies found:', Array.from(unusedDependencies).map(id => chalk.cyan(id)).join(', '))
}
if (implicitDependnecies.size) {
consola.warn('Potential implicit dependencies found:', Array.from(implicitDependnecies).map(id => chalk.cyan(id)).join(', '))
}
}
consola.log('')
}
function resolveEntry (input: string | [string, Partial<BuildEntry>] | Partial<BuildEntry>): BuildEntry {
let entry: Partial<BuildEntry>
if (typeof input === 'string') {
entry = { name: input }
} else if (Array.isArray(input)) {
entry = { name: input[0], ...input[1] }
} else {
entry = input
}
entry.input = entry.input ?? resolve(entry.srcDir || 'src', './' + entry.name)
entry.output = entry.output ?? resolve(entry.distDir || 'dist', './' + entry.name)
entry.bundle = entry.bundle ?? !(entry.input.endsWith('/') || entry.name?.endsWith('/'))
entry.format = entry.format ?? 'esm'
return entry as BuildEntry
}
function dumpObject (obj: Record<string, any>) {
return '{ ' + Object.keys(obj).map(key => `${key}: ${JSON.stringify(obj[key])}`).join(', ') + ' }'
}
function getRollupOptions (ctx: BuildContext): RollupOptions & { output: OutputOptions & { dir: string }} | null {
const extensions = ['.ts', '.mjs', '.js', '.json']
const r = (...path: string[]) => resolve(ctx.rootDir, ...path)
const entries = ctx.entries.filter(e => e.bundle)
if (!entries.length) {
return null
}
return {
input: entries.map(e => e.input),
output: {
dir: r('dist'),
format: 'cjs',
chunkFileNames: 'chunks/[hash].js',
exports: 'auto',
preferConst: true
},
external (id) {
if (id[0] === '.' || id[0] === '/' || id.includes('src/')) {
return false
}
const isExplicitExternal = !!ctx.externals.find(ext => id.includes(ext))
if (!isExplicitExternal) {
consola.warn(`Inlining external ${id}`)
}
return isExplicitExternal
},
onwarn (warning, rollupWarn) {
if (!warning.code || !['CIRCULAR_DEPENDENCY'].includes(warning.code)) {
rollupWarn(warning)
}
},
plugins: [
alias({
entries: {
src: resolve(__dirname, 'src')
}
}),
nodeResolve({
extensions
}),
esbuild({
target: 'node12',
loaders: {
'.json': 'json'
}
}),
commonjs({
extensions
})
]
}
}

View File

@ -1,6 +1,7 @@
{ {
"compilerOptions": { "compilerOptions": {
"esModuleInterop": true, "esModuleInterop": true,
"skipLibCheck": true,
"target": "ESNext", "target": "ESNext",
"module": "ESNext", "module": "ESNext",
"moduleResolution": "Node", "moduleResolution": "Node",
@ -10,9 +11,7 @@
"types": [ "types": [
"node", "node",
"jest" "jest"
], ]
"paths": { },
"nuxt/app/composables": ["./packages/app/src/composables"] "exclude": ["./packages/*/dist/*"]
}
}
} }

554
yarn.lock

File diff suppressed because it is too large Load Diff