- 假设我的项目根目录中有一个名为"file.xml"的文件
- 假设我在测试中有一个测试文件/名为"test.js",它有
const file = fs.readFileSync("../file.xml");
Run Code Online (Sandbox Code Playgroud)
如果我现在node ./tests/test.js从我的项目的根目录运行它说../file.xml不存在.如果我从tests目录中运行相同的命令,那么它可以工作.
似乎fs.readFileSync是相对于调用脚本的目录,而不是脚本的实际位置.如果我fs.readFileSync("./file.xml")在test.js中写入,它看起来会更加混乱,并且与require语句中的相对路径不一致,这些路径是文件相对的.
为什么是这样?
如何避免重写fs.readFileSync中的路径?
我的目标是在发布之前指定我的节点模块中包含哪些文件,并能够在本地测试安装.使用package.json中的"files",如果我发布我的包并安装它,那么我只得到"files"中指定的内容.
当我使用npm链接时不是这种情况.无论是package.json中的"文件"还是.npmignore,npm链接似乎总能给我每个文件.如何在本地测试我的模块安装?
例如:
cd ~/projects/node-redis # go into the package directory
npm link # creates global link
cd ~/projects/node-bloggy # go into some other package directory.
npm link redis # link-install the package
Run Code Online (Sandbox Code Playgroud)
如果〜/ projects/node-redis在其package.json中有"files:[lib]",那么在运行"npm link redis"之后,你会希望只有lib出现在〜/ projects/node-bloggy中,但这不是案子.
旁白:我喜欢node和npm,但是如果你看看你的节点模块中有什么,那么自述文件中使用的PNG就会有很多无关的文件.因此,模块非常庞大.
假设我们使用的是来自React-Bootstrap的Row ...我们如何在不使用包装器或内部元素的情况下对其进行样式化:
<Row>
<div className='some-style'>
...
</Row>
Run Code Online (Sandbox Code Playgroud)
理想情况下我们可以这样做:
<Row className='some-style>
...
</Row>
Run Code Online (Sandbox Code Playgroud)
但这不起作用,我认为这是因为React-Bootstrap不知道className在Row组件中的位置(它应该只设置具有我想的行样式的div)