我试图复制和替换多个文件中的一些变量。为此,我使用 esj
模块替换我的vars。
但我不知道ejs模块是否适合我的情况。我只想复制 "模板 "初始文件并替换文件中的变量。
我的例子是用NodeJS.NET来做的。
const symfonyPluginPath = path.join(
__dirname,
'../plugins/symfony/template'
);
const testPath = path.join(__dirname, '../plugins/test');
shell.rm('-rf', testPath);
shell.mkdir(testPath);
shell.cp('-r', `${symfonyPluginPath}/*`, testPath);
shell.cp('-r', `${symfonyPluginPath}/.*`, testPath);
shell.cd(testPath);
// @ts-ignore
fs.readdir(testPath, (error, files) => {
files.forEach((file) => {
const compiled = ejs.compile(
fs.readFileSync(`${testPath}/${file}`, 'utf8')
);
const test = compiled({ appName: 'test' });
console.log(test);
});
});
这段代码只适用于1个文件,但在 forEach
我有一个错误 EISDIR: illegal operation on a directory, read
.
我不知道我的方法是好的,如果ejs是正确的模块。
任何人都可以帮助我吗?
谢谢大家!
EISDIR代表 "错误,是目录"。这意味着NPM试图对一个文件做一些事情,但它是一个目录。试试这样的格式---path.join('xyz', 'pluginstest')