Sha256: dcc223c011d0a6ab233d04a68a197ec6f0765543013f1bfc2979351da018f854

Contents?: true

Size: 1.77 KB

Versions: 13

Compression:

Stored size: 1.77 KB

Contents

const { resolve } = require('path')
const { load } = require('js-yaml')
const { existsSync, readFileSync } = require('fs')

const { merge } = require('webpack-merge')
const {
  ensureTrailingSlash,
  setShakapackerEnvVariablesForBackwardCompatibility
} = require('./utils/helpers')
const { railsEnv } = require('./env')
const configPath = require('./utils/configPath')

const defaultConfigPath = require('./utils/defaultConfigPath')

const getDefaultConfig = () => {
  const defaultConfig = load(readFileSync(defaultConfigPath), 'utf8')
  return defaultConfig[railsEnv] || defaultConfig.production
}

const defaults = getDefaultConfig()
let config

if (existsSync(configPath)) {
  const appYmlObject = load(readFileSync(configPath), 'utf8')
  const envAppConfig = appYmlObject[railsEnv]

  if (!envAppConfig) {
    /* eslint no-console:0 */
    console.warn(`Warning: ${railsEnv} key not found in the configuration file. Using production configuration as a fallback.`)
  }

  config = merge(defaults, envAppConfig || {})
} else {
  config = merge(defaults, {})
}

config.outputPath = resolve(config.public_root_path, config.public_output_path)

// Ensure that the publicPath includes our asset host so dynamic imports
// (code-splitting chunks and static assets) load from the CDN instead of a relative path.
const getPublicPath = () => {
  setShakapackerEnvVariablesForBackwardCompatibility()
  const rootUrl = ensureTrailingSlash(process.env.SHAKAPACKER_ASSET_HOST || '/')
  return `${rootUrl}${config.public_output_path}/`
}

config.publicPath = getPublicPath()
config.publicPathWithoutCDN = `/${config.public_output_path}/`

if (config.manifest_path) {
  config.manifestPath = resolve(config.manifest_path)
} else {
  config.manifestPath = resolve(config.outputPath, 'manifest.json')
}

module.exports = config

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
shakapacker-7.2.3 package/config.js
shakapacker-7.2.2 package/config.js
shakapacker-7.2.1 package/config.js
shakapacker-7.2.0 package/config.js
shakapacker-7.2.0.rc.0 package/config.js
shakapacker-7.1.0 package/config.js
shakapacker-7.0.3 package/config.js
shakapacker-7.0.2 package/config.js
shakapacker-7.0.1 package/config.js
shakapacker-7.0.0 package/config.js
shakapacker-7.0.0.rc.2 package/config.js
shakapacker-7.0.0.rc.1 package/config.js
shakapacker-7.0.0.rc.0 package/config.js