Javascript 如何设置依赖项以及如何编译npm模块?
我发布了一些npm模块,所有模块都是针对现有库的,比如three.js或react 这些软件包似乎是下载的,但我没有收到任何关于它是否正确的反馈 依赖关系 定义依赖项时的高级别目标是什么 three.js: 这是令人困惑的,因为每个“扩展”都假设在某些上下文中有一个Javascript 如何设置依赖项以及如何编译npm模块?,javascript,npm,bundling-and-minification,Javascript,Npm,Bundling And Minification,我发布了一些npm模块,所有模块都是针对现有库的,比如three.js或react 这些软件包似乎是下载的,但我没有收到任何关于它是否正确的反馈 依赖关系 定义依赖项时的高级别目标是什么 three.js: 这是令人困惑的,因为每个“扩展”都假设在某些上下文中有一个THREE对象可用 因此只提到: "devDependencies": { "three": "^0.88.0" } 它的用途如下: require( 'three-instanced-mesh' )(THREE) 这既有道理,
THREE
对象可用
因此只提到:
"devDependencies": {
"three": "^0.88.0"
}
它的用途如下:
require( 'three-instanced-mesh' )(THREE)
这既有道理,也没有道理
如果没有three.js和传入的适当上下文(three
),该模块将无法工作,但由于我在运行时传入了它(?),因此它似乎不是一个实际的依赖项。当我签出repo并想在其中开发时,如果我想让代码运行,我确实需要安装three.js
反应
我已经发表了我打算用作的:
npm安装我的模块
从“我的模块”导入我的模块
peerDependencies
dep
JSX中的
意味着我已经做了一些事情,以使react在这个上下文中已经可用(类似于第一个示例中传递THREE
)
这里的区别在于我没有在运行时定义类,因此调用import MyModule
需要react才能在MyModule.js
中使用
这里期望的目标是什么?如何描述?我只知道我不想npm install my module
安装不同版本的react,也不想让更多react以某种方式捆绑在最终捆绑包中(但我甚至不确定这一点)
react
对我的react组件应该是什么类型的依赖项(如果有)以及我应该如何将它链接到我的模块
例如,在网页包中使用externals
与从'React'导入React
建造
如果我将我的回购协议设置为使用最新和最好的JS(或者甚至不是JS?),我应该如何发布,发布什么
import Foo from 'foo' //<-- where does 'foo' point and what is 'foo'?
从“Foo”导入Foo//
定义依赖项时的高级别目标是什么
您必须定义仅在开发时使用的依赖项(devDependencies),以及当有人安装您的包并将自动安装时所需的依赖项(依赖项),以及您需要可用但希望用户安装的依赖项(老实说,这没有意义)对等关系
这里的区别在于我没有在运行时定义类,因此调用import MyModule需要react才能在MyModule.js中使用
它要求React在导入文件的位置可用,即:A导入myModule
,但A必须导入React。实际上,将对等依赖放在这里是最好的方法
例如,在webpack中使用externals,与从“React”实际导入React相比
在webpack中使用externals只是告诉webpack不要捆绑react,并说react将在导入此组件之前导入
如果我将我的回购协议设置为使用最新和最好的JS(或者甚至不是JS?),我应该如何发布,发布什么
import Foo from 'foo' //<-- where does 'foo' point and what is 'foo'?
通常是包含库缩小/绑定的index.js文件。使用npm发布,您需要在package.json上设置main字段
从“Foo”导入Foo//投票结束?删除关于编译的部分可以解决这个问题吗?关于最后两段,假设我有/src
和一堆用es6或其他东西编写的文件。至少我会将它们捆绑在一起,但最后应该foo
指向a)捆绑的es6 index.js b)捆绑/传输的es5 index.js c)捆绑/传输/缩小的index.min.js d)只是一个es6条目main.js等