diff --git a/packages/vant-cli/src/compiler/compile-bundles.ts b/packages/vant-cli/src/compiler/compile-bundles.ts index a8bc96b65..ca899cb0d 100644 --- a/packages/vant-cli/src/compiler/compile-bundles.ts +++ b/packages/vant-cli/src/compiler/compile-bundles.ts @@ -1,8 +1,33 @@ +import fse from 'fs-extra'; +import { join } from 'path'; import { build } from 'vite'; -import { getPackageJson } from '../common/constant.js'; +import { getPackageJson, getVantConfig, LIB_DIR } from '../common/constant.js'; import { mergeCustomViteConfig } from '../common/index.js'; import { getViteConfigForPackage } from '../config/vite.package.js'; +// generate entry file for nuxt +async function genEntryForSSR() { + const { name } = getVantConfig(); + const cjsPath = join(LIB_DIR, 'ssr.js'); + const mjsPath = join(LIB_DIR, 'ssr.mjs'); + + const cjsContent = `'use strict'; + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/${name}.cjs.min.js'); +} else { + module.exports = require('./dist/${name}.cjs.js'); +}; +`; + + const mjsContent = `export * from './index.js';\n`; + + return Promise.all([ + fse.outputFile(cjsPath, cjsContent), + fse.outputFile(mjsPath, mjsContent), + ]); +} + export async function compileBundles() { const dependencies = getPackageJson().dependencies || {}; const externals = Object.keys(dependencies); @@ -39,4 +64,5 @@ export async function compileBundles() { await Promise.all( configs.map((config) => build(mergeCustomViteConfig(config))) ); + await genEntryForSSR(); } diff --git a/packages/vant/package.json b/packages/vant/package.json index 3868e9ce0..ef4109f75 100644 --- a/packages/vant/package.json +++ b/packages/vant/package.json @@ -10,6 +10,10 @@ "jsdelivr": "lib/vant.min.js", "exports": { ".": { + "node": { + "import": "./lib/ssr.mjs", + "require": "./lib/ssr.js" + }, "import": "./lib/vant.es.js", "require": "./lib/vant.cjs.js", "types": "./lib/index.d.ts"