2016-09-23 6 views
0

So habe ich den folgenden Codeblock:NodeJS erhalten absoluten Pfad relativ zu process.cwd()

#!/usr/bin/env node 

const path = require('path'); 
const yargs = require('yargs').argv; 
const ghpages = require('gh-pages'); 
const randomstring = require("randomstring"); 

const dirName = randomstring.generate({ 
    length: 12, 
    charset: 'alphabetic' 
}); 

console.log(__dirname, dirName, process.cwd(), yargs.directory, yargs.branch); 

ghpages.publish(path.join(process.cwd(), yargs.directory), { 
    branch: yargs.branch, 
    clone: `../../../../tmp/${dirName}` 
},() => { 
    console.log('removing'); 
}); 

Dies erfordert einen absoluten Pfad zum clone Lage.

Offensichtlich habe ich es im Moment hart zum Testen codiert, aber was ich tun möchte, ist der absolute Pfad zu /tmp/ von der process.cwd().

Also im Grunde, was ich will, wenn ich das Skript in /home/otis../../../../tmp/${dirName} lief würde ../../tmp/${dirName} so muss ich die

Irgendwelche Ideen auf der Grundlage der process.cwd() Pfad generieren?

Prost/

Antwort

2

Es ist schlechte Praxis relativ zu verwenden Pfade, insbesondere zu Systemordnern. Falls ein Projektstandort geändert wird, müssen Sie Ihren Code ebenfalls aktualisieren. Wenn Sie das System Temp-Verzeichnis, dann können Sie die folgenden Befehle verwenden:

require('os').tmpdir() 

Es kehren Sie absoluten Pfad zu Ihrem temporären Ordner korrigieren abhängig von den aktuellen OS.

+0

Ich verstehe, dass aber der 'Klon' Parameter einen relativen Pfad erwartet, was bedeutet, dass absolute Pfade nicht funktionieren. –

+0

Dann, wie @ AvraamMavridis vorgeschlagen, können Sie 'require ('Pfad'). Relative (process.cwd(), require ('os'). Tmpdir())' – itereshchenkov

2

Sie path.resolve verwenden können Sie den absoluten Pfad zu bekommen.

z.B.

path.resolve('../src/tmp') 
// '/Users/yourusername/src/tmp' 

Oder können Sie die path.relative(from, to) verwenden, die zwischen from und to

Also in Ihrem Fall den relativen Pfad gibt, ich denke, es

ist

path.relative(process.cwd(), "../../../../tmp/")

+0

Könnten Sie ein Beispiel aus 'process.cwd() geben' '/ tmp' ist der System-tmp-Ordner. –

+0

@OtisWright was meinst du 'absoluter Pfad relativ'? Da Sie die absolute URL haben (process.cwd gibt bereits den absoluten Pfad), warum brauchen Sie eine relative? –

+0

Beispiel zur Frage hinzugefügt, was ich meine. –

Verwandte Themen