如何使用主文件夹或主文件指定 npm package.json
how to specify npm package.json with main folder nor main file
我正在创建一个 npm 包 1,其中包含另一个 npm 包 2。包 2 仅包含一些已编译的 html 文件,文件夹 dist
中没有 js 文件。没有主文件。该包应该仅用作一种存档。
我应该在 package.json 中指定什么?我应该指定 files: ["dist/"]
还是 main:'dist'
?
如何从需要包 2 的包 1 中访问文件夹 dist
? require('package2').dist
?或者只是 require('package2')
?我想访问文件夹 dist,所以我可以根据包 1 的业务逻辑复制到其他位置。
非常感谢!
在 npm/Node.js 中,require()
仅适用于 JavaScript 文件。因此,您需要在 package 2 中包含一些 js 才能正常运行。
这是一个想法 - 在包 2 中,像这样创建一个 index.js
:
var path = require('path');
exports.base_path = path.join(__dirname, 'dist');
在您的 package.json 中,将 main
指向此文件。
然后在您的包 1 中,您可以轻松可靠地获取 html 文件的基本路径:
var html_base_path = require('package2').base_path;
之后,您可以使用 read and write 流来复制周围的东西。例如,要将包 2 的 dist/index.html
复制到 /some/other/dir
,您可以这样做:
var fs = require('fs');
var path = require('path');
var html_base_path = require('package2').base_path;
var filename = 'index.html');
var sourcePath = path.join(html_base_path, filename);
var destPath = path.join('/some/other/dir', filename);
fs.createReadStream(sourcePath).pipe(fs.createWriteStream(destPath));
我正在创建一个 npm 包 1,其中包含另一个 npm 包 2。包 2 仅包含一些已编译的 html 文件,文件夹 dist
中没有 js 文件。没有主文件。该包应该仅用作一种存档。
我应该在 package.json 中指定什么?我应该指定 files: ["dist/"]
还是 main:'dist'
?
如何从需要包 2 的包 1 中访问文件夹 dist
? require('package2').dist
?或者只是 require('package2')
?我想访问文件夹 dist,所以我可以根据包 1 的业务逻辑复制到其他位置。
非常感谢!
在 npm/Node.js 中,require()
仅适用于 JavaScript 文件。因此,您需要在 package 2 中包含一些 js 才能正常运行。
这是一个想法 - 在包 2 中,像这样创建一个 index.js
:
var path = require('path');
exports.base_path = path.join(__dirname, 'dist');
在您的 package.json 中,将 main
指向此文件。
然后在您的包 1 中,您可以轻松可靠地获取 html 文件的基本路径:
var html_base_path = require('package2').base_path;
之后,您可以使用 read and write 流来复制周围的东西。例如,要将包 2 的 dist/index.html
复制到 /some/other/dir
,您可以这样做:
var fs = require('fs');
var path = require('path');
var html_base_path = require('package2').base_path;
var filename = 'index.html');
var sourcePath = path.join(html_base_path, filename);
var destPath = path.join('/some/other/dir', filename);
fs.createReadStream(sourcePath).pipe(fs.createWriteStream(destPath));