晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/lib/node_modules/npm/node_modules/libnpmconfig/ |
| Current File : //lib/node_modules/npm/node_modules/libnpmconfig/index.js |
'use strict'
const fs = require('fs')
const figgyPudding = require('figgy-pudding')
const findUp = require('find-up')
const ini = require('ini')
const os = require('os')
const path = require('path')
const NpmConfig = figgyPudding({}, {
// Open up the pudding object.
other () { return true }
})
const ConfigOpts = figgyPudding({
cache: { default: path.join(os.homedir(), '.npm') },
configNames: { default: ['npmrc', '.npmrc'] },
envPrefix: { default: /^npm_config_/i },
cwd: { default: () => process.cwd() },
globalconfig: {
default: () => path.join(getGlobalPrefix(), 'etc', 'npmrc')
},
userconfig: { default: path.join(os.homedir(), '.npmrc') }
})
module.exports.read = getNpmConfig
function getNpmConfig (_opts, _builtin) {
const builtin = ConfigOpts(_builtin)
const env = {}
for (let key of Object.keys(process.env)) {
if (!key.match(builtin.envPrefix)) continue
const newKey = key.toLowerCase()
.replace(builtin.envPrefix, '')
.replace(/(?!^)_/g, '-')
env[newKey] = process.env[key]
}
const cli = NpmConfig(_opts)
const userConfPath = (
builtin.userconfig ||
cli.userconfig ||
env.userconfig
)
const user = userConfPath && maybeReadIni(userConfPath)
const globalConfPath = (
builtin.globalconfig ||
cli.globalconfig ||
env.globalconfig
)
const global = globalConfPath && maybeReadIni(globalConfPath)
const projConfPath = findUp.sync(builtin.configNames, { cwd: builtin.cwd })
let proj = {}
if (projConfPath && projConfPath !== userConfPath) {
proj = maybeReadIni(projConfPath)
}
const newOpts = NpmConfig(builtin, global, user, proj, env, cli)
if (newOpts.cache) {
return newOpts.concat({
cache: path.resolve(
(
(cli.cache || env.cache)
? builtin.cwd
: proj.cache
? path.dirname(projConfPath)
: user.cache
? path.dirname(userConfPath)
: global.cache
? path.dirname(globalConfPath)
: path.dirname(userConfPath)
),
newOpts.cache
)
})
} else {
return newOpts
}
}
function maybeReadIni (f) {
let txt
try {
txt = fs.readFileSync(f, 'utf8')
} catch (err) {
if (err.code === 'ENOENT') {
return ''
} else {
throw err
}
}
return ini.parse(txt)
}
function getGlobalPrefix () {
if (process.env.PREFIX) {
return process.env.PREFIX
} else if (process.platform === 'win32') {
// c:\node\node.exe --> prefix=c:\node\
return path.dirname(process.execPath)
} else {
// /usr/local/bin/node --> prefix=/usr/local
let pref = path.dirname(path.dirname(process.execPath))
// destdir only is respected on Unix
if (process.env.DESTDIR) {
pref = path.join(process.env.DESTDIR, pref)
}
return pref
}
}
|