@megalo/entry
Version:
解析配置在 `main.js` 或者 `App.vue` 中的 [小程序全局配置](https://developers.weixin.qq.com/miniprogram/dev/framework/config.html#%E5%85%A8%E5%B1%80%E9%85%8D%E7%BD%AE)并生成webpack所需要的entry键值对
42 lines (34 loc) • 1 kB
JavaScript
const fs = require('fs')
const path = require('path')
const parseConfig = require('./parseConfig')
const extractConfigPlugin = require('./extract-config')
const babel = require('babel-core')
const babelOptions = {
plugins: [
extractConfigPlugin
]
}
function resolve (...args) {
return path.resolve(__dirname, '../', ...args)
}
function extractConfig (txt) {
const { metadata } = babel.transform(txt, babelOptions)
return metadata.config.value
}
function extractConfigFromSFC (txt, filepath = '') {
const block = txt.match(/<config\b[^>]*>([\s\S]*)<\/config>/)
if (!block) return {}
let lang = block[0].match(/<config .*?lang=\"(.+?)\"/)
lang = (lang && lang[1]) || 'json'
return parseConfig({ source: block[1], lang, filepath })
}
function getAppObj (file) {
const txt = fs.readFileSync(file, 'utf8')
return file.endsWith('.vue') ? extractConfigFromSFC(txt) : extractConfig(txt)
}
module.exports = {
resolve,
getAppObj,
extractConfig,
extractConfigFromSFC
}