package.json中的根目录

我的问题涉及到我想作为NPM模块发布的现有库。 该库已经在使用,目前require通过本地文件系统。

我怎样才能指定我的模块文件的根目录?

如果我有像这样的结构:

 . ├── package.json ├── src | ├── js | └────── lib | └───────── my | └───────────── thing.js | └───────────── that.js 

我如何指定我的模块的根,可访问的文件是src/js/lib/my/

我想从外部项目中使用如下:

 var thing = require('my/thing'), that = require('my/that'); 

我看到package.json中的"files"属性,这是正确的方法吗?

正如文件所说:

主要字段是模块ID,是您程序的主要入口点。

所以你的package.json文件中会有"main": "src/js/lib/my/app.js"

我build议你创build一个app.js文件和module.exports你的不同的孩子。 例如:

  module.exports.thing = require('./thing'); module.exports.that = require('./that'); 

像这样使用它们:

 var mylib = require('mylib') , thing = mylib.thing , that = mylib.that; 

package.json主要是npm用来安装和pipe理依赖关系的文件。

require构造并不关心package.json所以你将不能使用它来颠覆require工作方式,并且相信包不在require加载scheme期望的地方。

请参阅https://nodejs.org/api/modules.html上的文档以及此处的加载scheme: https : //nodejs.org/api/modules.html#modules_all_together

您可以使用文档调用“从全局文件夹加载”的技术并定义NODE_PATH环境variables。

但我build议你坚持更标准的方法: – 把你的模块放在node_modules目录中 – 或者在你的app.js或index.js所在的同一目录下启动你的模块层次结构

在webpack中,你可以像这样指定resolve.alias:

 { resolve: { alias: { 'my': 'my/src' } } } 

或者你可以在package.json中指定directions选项

 { directions: { 'lib': 'src/lib' } }