mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-12 09:03:53 +00:00
9c1e0d1743
Co-authored-by: Clark Du <clark.duxin@gmail.com> Co-authored-by: Pooya Parsa <pooya@pi0.ir>
76 lines
2.3 KiB
JavaScript
76 lines
2.3 KiB
JavaScript
import path from 'path'
|
|
import fs from 'fs'
|
|
import klawSync from 'klaw-sync'
|
|
|
|
import _getPort from 'get-port'
|
|
import { defaultsDeep, find } from 'lodash'
|
|
import _rp from 'request-promise-native'
|
|
import corePkg from '../../packages/core/package.json'
|
|
|
|
import * as _Utils from '../../packages/common/src/index'
|
|
|
|
export { Nuxt } from '../../packages/core/src/index'
|
|
export { Builder, Generator } from '../../packages/builder/src/index'
|
|
|
|
export const rp = _rp
|
|
export const getPort = _getPort
|
|
export const version = corePkg.version
|
|
|
|
export const Utils = _Utils
|
|
export const Options = _Utils.Options
|
|
|
|
export const loadFixture = async function (fixture, overrides) {
|
|
const rootDir = path.resolve(__dirname, '..', 'fixtures', fixture)
|
|
const configFile = path.resolve(rootDir, 'nuxt.config.js')
|
|
|
|
const config = fs.existsSync(configFile) ? (await import(`../fixtures/${fixture}/nuxt.config`)).default : {}
|
|
|
|
config.rootDir = rootDir
|
|
config.dev = false
|
|
|
|
return defaultsDeep({}, overrides, config)
|
|
}
|
|
|
|
/**
|
|
* Prepare an object to pass to the createSportsSelectionView function
|
|
* @param {Function} condition return true to stop the waiting
|
|
* @param {Number} duration seconds totally wait
|
|
* @param {Number} interval milliseconds interval to check the condition
|
|
*
|
|
* @returns {Boolean} true: timeout, false: condition becomes true within total time
|
|
*/
|
|
export const waitUntil = async function waitUntil(condition, duration = 20, interval = 250) {
|
|
let iterator = 0
|
|
const steps = Math.floor(duration * 1000 / interval)
|
|
|
|
while (!condition() && iterator < steps) {
|
|
await Utils.waitFor(interval)
|
|
iterator++
|
|
}
|
|
|
|
if (iterator === steps) {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
export const listPaths = function listPaths(dir, pathsBefore = [], options = {}) {
|
|
if (Array.isArray(pathsBefore) && pathsBefore.length) {
|
|
// only return files that didn't exist before building
|
|
// and files that have been changed
|
|
options.filter = (item) => {
|
|
const foundItem = find(pathsBefore, (itemBefore) => {
|
|
return item.path === itemBefore.path
|
|
})
|
|
return typeof foundItem === 'undefined' ||
|
|
item.stats.mtimeMs !== foundItem.stats.mtimeMs
|
|
}
|
|
}
|
|
|
|
return klawSync(dir, options)
|
|
}
|
|
|
|
export const equalOrStartsWith = function equalOrStartsWith(string1, string2) {
|
|
return string1 === string2 || string2.startsWith(string1)
|
|
}
|