Javascript npm全局包:引用包中的内容文件
我正在构建一个将在全球安装的npm包。是否可以将非代码文件与可从代码文件引用的代码文件一起安装Javascript npm全局包:引用包中的内容文件,javascript,node.js,npm,scaffolding,Javascript,Node.js,Npm,Scaffolding,我正在构建一个将在全球安装的npm包。是否可以将非代码文件与可从代码文件引用的代码文件一起安装 例如,如果我的包包含someTextFile.txt和module.js文件(我的package.json包含“bin”:{“someCommand”:“/module.js”}),我可以将someTextFile.txt的内容读入module.js中的内存吗?我该怎么做?下面是一个模块示例,该模块将文件(字符串)的内容加载到全局范围 core.js:主模块文件(package.json的入口点) s
例如,如果我的包包含
someTextFile.txt
和module.js
文件(我的package.json
包含“bin”:{“someCommand”:“/module.js”}
),我可以将someTextFile.txt
的内容读入module.js
中的内存吗?我该怎么做?下面是一个模块示例,该模块将文件(字符串)的内容加载到全局范围
core.js:主模块文件(package.json的入口点)
spellBook.txt
如果您从另一段代码中需要它,您将看到它如何打印到控制台并自行初始化 如果要实现手动初始化,只需删除最后3行(
·:Initialize:。
)并使用重新加载()
:
我已经建立了一些私下分发的CLI,所以我相信我可以在这里说明一下
someCommand
时,将调用保持在$PATH的module.js
。如果最初将模板文件保存在与包相同的目录中,那么它将出现在module.js
本地的位置pwd
,则只需使用process.cwd()
获取该目录的路径即可。这完全取决于你如何编码关于回答
“我在npm包中的代码文件如何定位到全局安装的npm文件夹的路径,它位于该文件夹中,并且保证可以跨操作系统工作,并且是未来的证明?”
,这与您试图实现的模板非常不同。无论如何,你在这里只是问npm模块的全局路径。作为故障保护选项,在代码中使用require.main.filename
返回的路径作为参考。当您npm publish
时,它会打包文件夹中的所有内容,不包括.npmignore
中注明的内容。(如果您没有.npmignore
文件,它将深入.gitignore
。请参见)因此,简而言之,您可以将文本文件打包到模块中。安装模块(本地或全局)将以您期望的方式将文本文件安装到位
文本文件安装后如何查找<代码>\uuuDirName提供当前文件的路径。。。如果你问得够早的话。请参阅(如果在闭包中使用\uuuu dirname
,它可能是封闭函数的路径。)对于“未来”的近期,它看起来不会改变,并且在所有条件下都会按预期工作——无论模块是本地安装还是全局安装,以及其他模块是否依赖于该模块或直接安装
因此,假设文本文件与当前运行的脚本位于同一目录中:
var fs = require('fs');
var path = require('path');
var dir = __dirname;
function runIt(cb) {
var fullPath = path.combine(__dirname, 'myfile.txt');
fs.readFile(fullPath, 'utf8' , function (e,content) {
if (e) {
return cb(e);
}
// content now has the contents of the file
cb(content);
}
}
module.exports = runIt;
好极了 第一个问题,为什么是txt文件……第二个问题,该文件的路径重要吗?@Hackerman不一定是
.txt
文件。我的想法是要构建一个cli工具(在node.js中,通过npm发布和分发),它可以引用代码中未存储的数据。在我的特殊情况下,我想构建一个脚手架工具,在运行时,它会拾取一个模板文件,稍微转换模板文件,然后将结果保存在运行脚手架任务的本地目录中。该工具需要模板文件的路径,以便在执行时可以读取该文件。在我看来,npm包只是一个带有package.json
的文件夹。因此,如果您包括其他文件,如.txt文件,它应该是可访问的。您想知道它是否可访问,或者如何访问它吗?因为对于后者,您似乎可以像访问常规文件一样访问这些文件。@mgul这也是我对npm的理解。我想我的问题可以重新表述为“我在npm包中的代码文件如何定位到全局安装的npm文件夹的路径,它位于该文件夹中,并且保证可以跨操作系统工作,并且是未来的证明?”一旦我有了它,我就可以构建该文件夹中各个文件的路径,并将它们作为普通文件进行交互。我认为您应该研究这个问题:它本质上为您提供了访问项目根目录以访问其中文件的方法。
ᚠ ᚡ ᚢ ᚣ ᚤ ᚥ ᚦ ᚧ ᚨ ᚩ ᚪ ᚫ ᚬ ᚭ ᚮ ᚯ
ᚰ ᚱ ᚲ ᚳ ᚴ ᚵ ᚶ ᚷ ᚸ ᚹ ᚺ ᚻ ᚼ ᚽ ᚾ ᚿ
ᛀ ᛁ ᛂ ᛃ ᛄ ᛅ ᛆ ᛇ ᛈ ᛉ ᛊ ᛋ ᛌ ᛍ ᛎ ᛏ
ᛐ ᛑ ᛒ ᛓ ᛔ ᛕ ᛖ ᛗ ᛘ ᛙ ᛚ ᛛ ᛜ ᛝ ᛞ ᛟ
ᛠ ᛡ ᛢ ᛣ ᛤ ᛥ ᛦ ᛧ ᛨ ᛩ ᛪ ᛫ ᛬ ᛭ ᛮ ᛯ
const magick = require("core.js")
magick.reload((error)=>{ if(error){throw error}else{
//now you know the SpellBook is loaded
console.log(SpellBook.length)
})
var fs = require('fs');
var path = require('path');
var dir = __dirname;
function runIt(cb) {
var fullPath = path.combine(__dirname, 'myfile.txt');
fs.readFile(fullPath, 'utf8' , function (e,content) {
if (e) {
return cb(e);
}
// content now has the contents of the file
cb(content);
}
}
module.exports = runIt;