我有2个文件A.js
和B.js
,其结构如下:
packgages
|
– B
|
- B.js
A.js
在我的A.js
我只是这样做:
import B.js
在我的B.js
我想知道此文件的完整路径(B.js
):
console.log(__dirname);
因此,如果我执行cd packages/B; node B.js
,我会得到以下结果:
/Users/luke/Projekte/writejs/code/verne/packages/B
但如果我超越node A.js
,我就明白了:
/Users/luke/Projekte/writejs/code/verne
看到__dirname
没有引用它所调用的文件,而是引用在其根目录中执行它的文件。
有没有办法获得/packages/B
的完整路径,无论我从哪个文件导入它?
答案 0 :(得分:0)
我从未使用Rollup,但从我在页面上的介绍中可以理解的,其目的是将ES6脚本转换为单个js文件。如果有以下文件:
<强> moduleA.js 强>
import p from "./myModules/moduleB";
console.log(__dirname);
console.log(__filename);
p();
<强> myModules / moduleB.js 强>
export default function () {
console.log(__dirname);
console.log(__filename);
}
在moduleA.js上执行Rollup时
rollup -i moduleA.js -f cjs -o rollup.js
我获得以下文件:
<强> rollup.js 强>
'use strict';
function p () {
console.log(__dirname);
console.log(__filename);
}
console.log(__dirname);
console.log(__filename);
p();
如您所见,对先前结构的任何引用都消失了。此外,所有内容都在一个文件中,因此目录不会更改。
我还试图在创建Rollup bundle时找到一种维护目录结构的方法,但是找不到任何解决方案。