soraka
Version:
Soraka is a React packaging tool for dcloud.
76 lines (59 loc) • 1.79 kB
JavaScript
const _ = require('lodash')
const fs = require('fs')
const path = require('path')
const findup = require('find-up')
// 读取 JSON 文件
function readConfigFile(filepath) {
return path.extname(filepath) === '.js' ?
require(filepath) :
JSON.parse(fs.readFileSync(filepath))
}
// 根据 .sorakarc 解析执行目录
const sorakaConfigPath = findup.sync(['.sorakarc', '.sorakarc.js'])
const sorakaConfig = sorakaConfigPath ? readConfigFile(sorakaConfigPath) : {}
const envConfig = process.env.NODE_ENV ? sorakaConfig.env[process.env.NODE_ENV] : {}
const APP_PATH = sorakaConfigPath ? path.dirname(sorakaConfigPath) : path.resolve(process.cwd())
const ASSETS_PATH = './assets'
const BIN_PATH = path.resolve(__dirname, '../')
const SOURCE_PATH = path.resolve(APP_PATH, './src')
const SOURCE_ASSETS_PATH = path.resolve(APP_PATH, ASSETS_PATH)
const BUILD_PATH = path.resolve(APP_PATH, './build')
const BUILD_ASSETS_PATH = path.resolve(APP_PATH, './build/', ASSETS_PATH)
const PUBLIC_PATH = '/'
var baseConfig = {
// 静态文件目录
ASSETS_PATH,
// soraka 目录
BIN_PATH,
// 运行目录
APP_PATH,
// 开发目录
SOURCE_PATH,
// 开发目录静态文件
SOURCE_ASSETS_PATH,
// 编译目录
BUILD_PATH,
// 编译目录静态文件
BUILD_ASSETS_PATH,
PUBLIC_PATH,
port: 10086,
autoOpenBrowser: true,
entry: './app',
// DefinePlugin plugin
define: {
'process.env.NODE_ENV': process.env.NODE_ENV
},
// externals config
externals: {},
// alias config
alias: {},
// proxyMiddleware proxyTable
proxy: {},
// htmlWebpackPlugin
html: {
filename: 'index.html',
template: path.resolve(SOURCE_PATH, './index.html'),
inject: true
}
}
module.exports = _.defaultsDeep(envConfig, sorakaConfig, baseConfig, {})