gpt4 book ai didi

Meteor Package api.add_files 添加整个文件夹

转载 作者:行者123 更新时间:2023-12-04 05:24:18 24 4
gpt4 key购买 nike

我想将整个文件夹的文件添加到我的包中。除了单独添加每个文件,是否可以使用 package.js 文件中的 api.add_files 添加整个文件文件夹?也许是这样的:

Package.on_use(function(api) {

api.add_files(["files/*","client");

});

最佳答案

我认为目前公共(public) API 中没有类似的东西。

但是,您可以使用普通的旧 Node.JS 来实现您想要做的事情。

我们的包结构如下所示:

/packages/my-package
|-> client
| |-> nested
| | |-> file3.js
| |-> file1.js
| |-> file2.js
|-> my-package.js
|-> package.js

我们构建一个辅助函数如下:
function getFilesFromFolder(packageName,folder){
// local imports
var _=Npm.require("underscore");
var fs=Npm.require("fs");
var path=Npm.require("path");
// helper function, walks recursively inside nested folders and return absolute filenames
function walk(folder){
var filenames=[];
// get relative filenames from folder
var folderContent=fs.readdirSync(folder);
// iterate over the folder content to handle nested folders
_.each(folderContent,function(filename){
// build absolute filename
var absoluteFilename=folder+path.sep+filename;
// get file stats
var stat=fs.statSync(absoluteFilename);
if(stat.isDirectory()){
// directory case => add filenames fetched from recursive call
filenames=filenames.concat(walk(absoluteFilename));
}
else{
// file case => simply add it
filenames.push(absoluteFilename);
}
});
return filenames;
}
// save current working directory (something like "/home/user/projects/my-project")
var cwd=process.cwd();
// chdir to our package directory
process.chdir("packages"+path.sep+packageName);
// launch initial walk
var result=walk(folder);
// restore previous cwd
process.chdir(cwd);
return result;
}

你可以像这样使用它:
Package.on_use(function(api){
var clientFiles=getFilesFromFolder("my-package","client");
// should print ["client/file1.js","client/file2.js","client/nested/file3.js"]
console.log(clientFiles);
api.add_files(clientFiles,"client");
});

我们简单地使用 Node.JS fs utils使用文件系统。

关于Meteor Package api.add_files 添加整个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20793505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com