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' } }