我有一个具有以下结构的项目:
project-root
??? some-dir
? ??? alice.json
? ??? bob.json
? ??? dave.json
??? ...
Run Code Online (Sandbox Code Playgroud)
我想创建如下的符号链接:
foo - > alice.json我选择使用这个fs.symlink功能:
fs.symlink(srcpath, dstpath[, type], callback)异步符号链接(2).除了可能的异常之外,没有给完成回调的参数.该
type参数可以设置为'dir','file'或者'junction'(默认'file')和仅在Windows上使用(忽略其他平台).请注意,Windows联结点要求目标路径是绝对路径.使用时'junction',destination参数将自动标准化为绝对路径.
所以我做了:
require("fs").symlink(
projectRoot + "/some-dir/alice.json"
, projectRoot + "/some-dir/foo"
, function (err) { console.log(err || "Done."); }
);
Run Code Online (Sandbox Code Playgroud)
这会创建foo符号链接.但是,由于路径是绝对的,因此符号链接也使用绝对路径.
如何创建相对于目录的symlink路径(在本例中为some-dir)?
这将防止在重命名父目录或在另一台计算机上移动项目时出错.
我看到的脏选择是使用exec("ln -s alice.json foo", { cwd: pathToSomeDir }, callback);,但我想避免这种情况并使用NodeJS API.
那么,如何在NodeJS中使用绝对路径创建相对符号链接?
Tro*_*ott 10
选项1:用于process.chdir()将进程的当前工作目录更改为projectRoot.然后,提供相对路径fs.symlink().
选项2:使用path.relative()或以其他方式生成符号链接与其目标之间的相对路径.将该相对路径作为第一个参数传递给 fs.symlink()第二个参数提供绝对路径.例如:
var relativePath = path.relative('/some-dir', '/some-dir/alice.json');
fs.symlink(relativePath, '/some-dir/foo', callback);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11394 次 |
| 最近记录: |