我正在尝试从bin脚本运行时更改我的Node.js脚本的工作目录.我有以下内容:
#!/usr/bin/env node
process.chdir('/Users')
Run Code Online (Sandbox Code Playgroud)
当我随后运行此文件时./bin/nodefile,它会退出,但当前shell上下文的工作目录没有更改.我也试过shelljs,但这也不起作用.
做这个的最好方式是什么?我知道它有效,但它只是在一个单独的过程中.
如何使用项目根目录中的文件路径在 NodeJS 中导入 JavaScript 文件?(而不是相对文件路径)
\n换句话说,我的团队正在尝试从语法样式 A过渡到语法样式 B(如下所示):
\n语法风格A
\nconst source = require(\'../../../../../../source.js\');\nRun Code Online (Sandbox Code Playgroud)\n语法风格 B
\nconst source = require(\'src/source.js\'); // "src" is a direct subfolder of the project root\nRun Code Online (Sandbox Code Playgroud)\n我已经审阅了很多关于这个主题的帖子,但没有一个能够满足我的项目的要求......
\n以下是我的设置。Package.json是由WebStorm生成的,我没有更改它。
\n …我有以下代码块:
#!/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');
});
Run Code Online (Sandbox Code Playgroud)
这需要该位置的绝对路径clone。
显然,我现在已经对其进行了硬编码以进行测试,但我想做的是/tmp/获取process.cwd().
所以,我想要的是,如果我运行脚本/home/otis ../../../../tmp/${dirName}会变成../../tmp/${dirName},所以我需要根据process.cwd()
有任何想法吗?