我有此脚本,需要node
通过CLI运行。
该脚本的文件相对文件引用为:
files: '../functions/index.js',
文件结构是这样的:
> buildScripts
myScript.js
> functions
index.js
当我在buildScripts
文件夹中(在终端上)时,一切正常:
>> C:\MyProjectRoot\buildScripts> node myScript.js
但是当我进入MyProjectRoot
文件夹时,它会抛出:
>> C:\MyProjectRoot> node buildScripts/myScript.js
发生错误:错误:没有文件符合以下格式:../functions/index.js
题
如何从myProject
根文件夹运行此文件并仍然获得正确的路径?
我不知道它是否取决于我正在运行的脚本/软件包,因此这是该脚本的完整源代码:
myScript.js
我正在使用该replace-in-file
软件包来更新一些导入。在某些时候这将是一个postBuild脚本。
const escapeStringRegexp = require('escape-string-regexp');
const fromPath = './src';
const fromPathRegExp = new RegExp(escapeStringRegexp(fromPath),'g');
const replace = require('replace-in-file');
const options = {
files: '../functions/index.js', // <----------------------------------
from: fromPathRegExp,
to: './distFunctions',
};
replace(options)
.then(results => {
console.log('Replacement results:', results);
})
.catch(error => {
console.error('Error occurred:', error);
})
;
以下问题(下面的链接)有很大帮助(尽管不是重复的):
这是脚本的工作版本。无论您从何处执行它,它都有效。
const path = require('path');
const escapeStringRegexp = require('escape-string-regexp');
const fromPath = './src';
const fromPathRegExp = new RegExp(escapeStringRegexp(fromPath),'g');
const replace = require('replace-in-file');
const options = {
files: '../functions/index.js',
from: fromPathRegExp,
to: './distFunctions',
};
console.log('This is the __dirname: ' + __dirname);
console.log('This is the __filename: ' + __filename);
console.log('This is process.cwd(): ' + process.cwd());
console.log('This is the ../functions/index.js: ' + path.resolve('../functions/index.js'));
process.chdir(__dirname);
console.log('CHANGED cwd WITH process.chdir');
console.log('This is the __dirname: ' + __dirname);
console.log('This is the __filename: ' + __filename);
console.log('This is process.cwd(): ' + process.cwd());
console.log('This is the ../functions/index.js: ' + path.resolve('../functions/index.js'));
replace(options)
.then(results => {
console.log('Replacement results:', results);
})
.catch(error => {
console.error('Error occurred:', error);
})
;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句