UNPKG

koot

Version:

Koot.js - React isomorphic framework created by CMUX

55 lines (45 loc) 1.72 kB
const fs = require('fs') const getPathnameProjectConfigFile = require('./get-pathname-project-config-file') // const readBuildConfigFile = require('../utils/read-build-config-file') const extractType = () => { const pathnameKootJS = getPathnameProjectConfigFile() try { const { type } = require(pathnameKootJS) return type } catch (e) { } const content = fs.readFileSync(pathnameKootJS, 'utf-8') const matches = /type[ ]*=[ ]*['"](.+?)['"]/gm.exec(content) if (Array.isArray(matches) && matches.length > 1) return matches[1] return undefined } /** * 从核心配置文件 (./koot.js) 中读取 App 类型 (type),并修改部分环境变量 * * WEBPACK_BUILD_TYPE: 'isomorphic' || 'spa' || etc... * * KOOT_PROJECT_TYPE: 'ReactApp' || 'ReactSPA' || etc... * @async * @returns {String} process.env.KOOT_PROJECT_TYPE */ module.exports = async () => { if (typeof process.env.KOOT_PROJECT_TYPE === 'undefined') { process.env.KOOT_PROJECT_TYPE = extractType() || '' } switch (process.env.KOOT_PROJECT_TYPE.toLowerCase()) { case 'react': { // if ((await readBuildConfigFile()).server) process.env.WEBPACK_BUILD_TYPE = 'isomorphic' process.env.KOOT_PROJECT_TYPE = 'ReactApp' // return 'ReactSPA' break } case 'react-spa': case 'reactspa': { process.env.WEBPACK_BUILD_TYPE = 'spa' process.env.KOOT_PROJECT_TYPE = 'ReactSPA' break } // default: // return process.env.KOOT_PROJECT_TYPE } return process.env.KOOT_PROJECT_TYPE }