| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- "use strict";
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.defaultDefines = exports.resolveConfig = void 0;
- const path_1 = __importDefault(require("path"));
- const fs_extra_1 = __importDefault(require("fs-extra"));
- const chalk_1 = __importDefault(require("chalk"));
- const dotenv_1 = __importDefault(require("dotenv"));
- const dotenv_expand_1 = __importDefault(require("dotenv-expand"));
- const buildPluginEsbuild_1 = require("./build/buildPluginEsbuild");
- const resolver_1 = require("./resolver");
- const utils_1 = require("./utils");
- const debug = require('debug')('vite:config');
- async function resolveConfig(mode, configPath) {
- const start = Date.now();
- const cwd = process.cwd();
- let config;
- let resolvedPath;
- let isTS = false;
- if (configPath) {
- resolvedPath = path_1.default.resolve(cwd, configPath);
- }
- else {
- const jsConfigPath = path_1.default.resolve(cwd, 'vite.config.js');
- if (fs_extra_1.default.existsSync(jsConfigPath)) {
- resolvedPath = jsConfigPath;
- }
- else {
- const tsConfigPath = path_1.default.resolve(cwd, 'vite.config.ts');
- if (fs_extra_1.default.existsSync(tsConfigPath)) {
- isTS = true;
- resolvedPath = tsConfigPath;
- }
- }
- }
- if (!resolvedPath) {
- // load environment variables
- return {
- env: loadEnv(mode, cwd)
- };
- }
- try {
- if (!isTS) {
- try {
- config = require(resolvedPath);
- }
- catch (e) {
- if (!/Cannot use import statement|Unexpected token 'export'|Must use import to load ES Module/.test(e.message)) {
- throw e;
- }
- }
- }
- if (!config) {
- // 2. if we reach here, the file is ts or using es import syntax, or
- // the user has type: "module" in their package.json (#917)
- // transpile es import syntax to require syntax using rollup.
- const rollup = require('rollup');
- const esbuildPlugin = await buildPluginEsbuild_1.createEsbuildPlugin({});
- const esbuildRenderChunkPlugin = buildPluginEsbuild_1.createEsbuildRenderChunkPlugin('es2019', false);
- // use node-resolve to support .ts files
- const nodeResolve = require('@rollup/plugin-node-resolve').nodeResolve({
- extensions: resolver_1.supportedExts
- });
- const bundle = await rollup.rollup({
- external: (id) => (id[0] !== '.' && !path_1.default.isAbsolute(id)) ||
- id.slice(-5, id.length) === '.json',
- input: resolvedPath,
- treeshake: false,
- plugins: [esbuildPlugin, nodeResolve, esbuildRenderChunkPlugin]
- });
- const { output: [{ code }] } = await bundle.generate({
- exports: 'named',
- format: 'cjs'
- });
- config = await loadConfigFromBundledFile(resolvedPath, code);
- }
- if (typeof config === 'function') {
- config = config(mode);
- }
- // normalize config root to absolute
- if (config.root && !path_1.default.isAbsolute(config.root)) {
- config.root = path_1.default.resolve(path_1.default.dirname(resolvedPath), config.root);
- }
- if (typeof config.vueTransformAssetUrls === 'object') {
- config.vueTransformAssetUrls = normalizeAssetUrlOptions(config.vueTransformAssetUrls);
- }
- // resolve plugins
- if (config.plugins) {
- for (const plugin of config.plugins) {
- config = resolvePlugin(config, plugin);
- }
- }
- config.env = {
- ...config.env,
- ...loadEnv(mode, config.root || cwd)
- };
- debug(`config resolved in ${Date.now() - start}ms`);
- config.__path = resolvedPath;
- return config;
- }
- catch (e) {
- console.error(chalk_1.default.red(`[vite] failed to load config from ${resolvedPath}:`));
- console.error(e);
- process.exit(1);
- }
- }
- exports.resolveConfig = resolveConfig;
- async function loadConfigFromBundledFile(fileName, bundledCode) {
- const extension = path_1.default.extname(fileName);
- const defaultLoader = require.extensions[extension];
- require.extensions[extension] = (module, filename) => {
- if (filename === fileName) {
- ;
- module._compile(bundledCode, filename);
- }
- else {
- defaultLoader(module, filename);
- }
- };
- delete require.cache[fileName];
- const raw = require(fileName);
- const config = raw.__esModule ? raw.default : raw;
- require.extensions[extension] = defaultLoader;
- return config;
- }
- function resolvePlugin(config, plugin) {
- return {
- ...config,
- ...plugin,
- alias: {
- ...plugin.alias,
- ...config.alias
- },
- define: {
- ...plugin.define,
- ...config.define
- },
- transforms: [...(config.transforms || []), ...(plugin.transforms || [])],
- indexHtmlTransforms: [
- ...(config.indexHtmlTransforms || []),
- ...(plugin.indexHtmlTransforms || [])
- ],
- resolvers: [...(config.resolvers || []), ...(plugin.resolvers || [])],
- configureServer: [].concat(config.configureServer || [], plugin.configureServer || []),
- configureBuild: [].concat(config.configureBuild || [], plugin.configureBuild || []),
- vueCompilerOptions: {
- ...config.vueCompilerOptions,
- ...plugin.vueCompilerOptions
- },
- vueTransformAssetUrls: mergeAssetUrlOptions(config.vueTransformAssetUrls, plugin.vueTransformAssetUrls),
- vueTemplatePreprocessOptions: {
- ...config.vueTemplatePreprocessOptions,
- ...plugin.vueTemplatePreprocessOptions
- },
- vueCustomBlockTransforms: {
- ...config.vueCustomBlockTransforms,
- ...plugin.vueCustomBlockTransforms
- },
- rollupInputOptions: mergeObjectOptions(config.rollupInputOptions, plugin.rollupInputOptions),
- rollupOutputOptions: mergeObjectOptions(config.rollupOutputOptions, plugin.rollupOutputOptions),
- enableRollupPluginVue: config.enableRollupPluginVue || plugin.enableRollupPluginVue
- };
- }
- function mergeAssetUrlOptions(to, from) {
- if (from === true) {
- return to;
- }
- if (from === false) {
- return from;
- }
- if (typeof to === 'boolean') {
- return from || to;
- }
- return {
- ...normalizeAssetUrlOptions(to),
- ...normalizeAssetUrlOptions(from)
- };
- }
- function normalizeAssetUrlOptions(o) {
- if (o && Object.keys(o).some((key) => Array.isArray(o[key]))) {
- return {
- tags: o
- };
- }
- else {
- return o;
- }
- }
- function mergeObjectOptions(to, from) {
- if (!to)
- return from;
- if (!from)
- return to;
- const res = { ...to };
- for (const key in from) {
- const existing = res[key];
- const toMerge = from[key];
- if (Array.isArray(existing) || Array.isArray(toMerge)) {
- res[key] = [].concat(existing, toMerge).filter(Boolean);
- }
- else {
- res[key] = toMerge;
- }
- }
- return res;
- }
- function loadEnv(mode, root) {
- if (mode === 'local') {
- throw new Error(`"local" cannot be used as a mode name because it conflicts with ` +
- `the .local postfix for .env files.`);
- }
- debug(`env mode: ${mode}`);
- const clientEnv = {};
- const envFiles = [
- /** mode local file */ `.env.${mode}.local`,
- /** mode file */ `.env.${mode}`,
- /** local file */ `.env.local`,
- /** default file */ `.env`
- ];
- for (const file of envFiles) {
- const path = utils_1.lookupFile(root, [file], true);
- if (path) {
- // NOTE: this mutates process.env
- const { parsed, error } = dotenv_1.default.config({
- debug: !!process.env.DEBUG || undefined,
- path
- });
- if (!parsed) {
- throw error;
- }
- // NOTE: this mutates process.env
- dotenv_expand_1.default({ parsed });
- // set NODE_ENV under a different key so that we know this is set from
- // vite-loaded .env files. Some users may have default NODE_ENV set in
- // their system.
- if (parsed.NODE_ENV) {
- process.env.VITE_ENV = parsed.NODE_ENV;
- }
- // only keys that start with VITE_ are exposed.
- for (const [key, value] of Object.entries(parsed)) {
- if (key.startsWith(`VITE_`)) {
- clientEnv[key] = value;
- }
- }
- }
- }
- debug(`env: %O`, clientEnv);
- return clientEnv;
- }
- // TODO move this into Vue plugin when we extract it
- exports.defaultDefines = {
- __VUE_OPTIONS_API__: true,
- __VUE_PROD_DEVTOOLS__: false
- };
- //# sourceMappingURL=config.js.map
|