如何自动更新我的 javascript 文件以导入新检测到的文件?
How can I automatically update my javascript file to import newly detected files?
我标记了守望者,因为它可能是我正在寻找的解决方案,但我不太清楚如何以这种方式使用它!
我有一个目录
/imgs
/icons
/bird.png
/cat.png
/dog.png
/pig.png
我有一个文件
/imgs/index.js
我的 index.js 负责导入所有图像,然后导出单个对象供我的项目的其余部分使用。
const bird = require('./icons/bird.png');
const cat = require('./icons/cat.png');
const dog = require('./icons/dog.png');
const pig = require('./icons/pig.png');
const Icons = { bird, cat, dog, pig };
export default Icons;
我想做的是观察我的 imgs 文件夹是否有新添加的内容,并自动更新我的 index.js 以导入这些新文件并将它们添加到我的对象中。我需要用 Common.js 导入它们并用 ES6 导出它们。
有谁知道解决这个问题的好方法吗?
一个潜在的解决方案是编写一个 JavaScript 脚本来生成你的 index.js,如下所示:
'use strict';
const fs = require('fs');
const DIR = __dirname + '/imgs/icons';
const output = __dirname + '/imgs/index.js';
return fs.readdir(DIR, (err, files) => {
let result = '';
let references = [];
files.forEach(item => {
// assuming item has the format animal.png
let newReference = item.split('.')[0];
references.push(newReference);
result += `const ${newReference} = require('./icons/${item}');\n`;
});
result += `\nconst Icons = { ${references} };\n\nexport default Icons;`;
fs.writeFile(output, result, err => {
if (err) throw err;
console.log(output + ' updated');
});
});
将该文件(我们称它为 watcher.js)在 imgs
的父目录中,并在检测到您的图标目录发生变化时将其设为 watchman 运行:
watchman imgs/icons "node watcher.js"
请注意,如果将新文件放入监视目录,index.js-创建脚本将不会重新运行。只有当它再次被更改时(即使只是用相同的数据再次保存),index.js 将反映该更改。
你可以简单地通过 运行ning touch imgs/icons/crabigator.png
两次测试,然后查看 index.js.
的 watchman 日志 and/or 内容
我标记了守望者,因为它可能是我正在寻找的解决方案,但我不太清楚如何以这种方式使用它!
我有一个目录
/imgs
/icons
/bird.png
/cat.png
/dog.png
/pig.png
我有一个文件
/imgs/index.js
我的 index.js 负责导入所有图像,然后导出单个对象供我的项目的其余部分使用。
const bird = require('./icons/bird.png');
const cat = require('./icons/cat.png');
const dog = require('./icons/dog.png');
const pig = require('./icons/pig.png');
const Icons = { bird, cat, dog, pig };
export default Icons;
我想做的是观察我的 imgs 文件夹是否有新添加的内容,并自动更新我的 index.js 以导入这些新文件并将它们添加到我的对象中。我需要用 Common.js 导入它们并用 ES6 导出它们。
有谁知道解决这个问题的好方法吗?
一个潜在的解决方案是编写一个 JavaScript 脚本来生成你的 index.js,如下所示:
'use strict';
const fs = require('fs');
const DIR = __dirname + '/imgs/icons';
const output = __dirname + '/imgs/index.js';
return fs.readdir(DIR, (err, files) => {
let result = '';
let references = [];
files.forEach(item => {
// assuming item has the format animal.png
let newReference = item.split('.')[0];
references.push(newReference);
result += `const ${newReference} = require('./icons/${item}');\n`;
});
result += `\nconst Icons = { ${references} };\n\nexport default Icons;`;
fs.writeFile(output, result, err => {
if (err) throw err;
console.log(output + ' updated');
});
});
将该文件(我们称它为 watcher.js)在 imgs
的父目录中,并在检测到您的图标目录发生变化时将其设为 watchman 运行:
watchman imgs/icons "node watcher.js"
请注意,如果将新文件放入监视目录,index.js-创建脚本将不会重新运行。只有当它再次被更改时(即使只是用相同的数据再次保存),index.js 将反映该更改。
你可以简单地通过 运行ning touch imgs/icons/crabigator.png
两次测试,然后查看 index.js.