1 | const { resolve } = require('path')
|
2 | const { safeLoad } = require('js-yaml')
|
3 | const { readFileSync } = require('fs')
|
4 | const deepMerge = require('./utils/deep_merge')
|
5 | const { isArray, ensureTrailingSlash } = require('./utils/helpers')
|
6 | const { railsEnv } = require('./env')
|
7 |
|
8 | const defaultConfigPath = require.resolve('../lib/install/config/webpacker.yml')
|
9 | const configPath = resolve('config', 'webpacker.yml')
|
10 |
|
11 | const getDefaultConfig = () => {
|
12 | const defaultConfig = safeLoad(readFileSync(defaultConfigPath), 'utf8')
|
13 | return defaultConfig[railsEnv] || defaultConfig.production
|
14 | }
|
15 |
|
16 | const defaults = getDefaultConfig()
|
17 | const app = safeLoad(readFileSync(configPath), 'utf8')[railsEnv]
|
18 |
|
19 | if (isArray(app.extensions) && app.extensions.length) delete defaults.extensions
|
20 | if (isArray(app.static_assets_extensions) && app.static_assets_extensions.length) {
|
21 | delete defaults.static_assets_extensions
|
22 | }
|
23 |
|
24 | const config = deepMerge(defaults, app)
|
25 | config.outputPath = resolve(config.public_root_path, config.public_output_path)
|
26 |
|
27 |
|
28 |
|
29 | const getPublicPath = () => {
|
30 | const rootUrl = ensureTrailingSlash(process.env.WEBPACKER_ASSET_HOST || '/')
|
31 | return `${rootUrl}${config.public_output_path}/`
|
32 | }
|
33 |
|
34 | config.publicPath = getPublicPath()
|
35 | config.publicPathWithoutCDN = `/${config.public_output_path}/`
|
36 |
|
37 | module.exports = config
|