【发布时间】:2018-08-14 00:17:59
【问题描述】:
我发布了一些 npm 模块,所有模块都用于现有库,例如 three.js 或 react。
这些包似乎已下载,但我没有收到关于它是否正确完成的反馈。
依赖关系
定义依赖项时的高级目标是什么?
三个.js:
这很令人困惑,因为每个“扩展”只是假设在某些上下文中有一个THREE 对象可用。
My three.js module 因此只提到:
"devDependencies": {
"three": "^0.88.0"
}
而且它是这样使用的:
require( 'three-instanced-mesh' )(THREE)
这两者都有道理,也没有道理。
如果没有三个.js 和传入的正确上下文 (THREE),该模块将无法工作,但由于我在运行时将其传入(?),它似乎不是一个实际的依赖项。当我签出 repo 并想在其中开发时,如果我想让代码运行,我确实需要安装 three.js。
反应
我已经发布了a React component,我打算这样使用它:
npm install my-moduleimport MyModule from 'my-module<MyModule/>
出于某种原因,我将 react 列为 peerDependencies dep。
<MyModule/> 意味着我已经做了一些事情以使反应在这种情况下已经可用(类似于第一个示例中 THREE 的传递方式?)。
这里的区别是我没有在运行时定义类,因此调用import MyModule 需要在MyModule.js 中提供反应?
这里期望的目标是什么以及如何描述它?我只知道我不希望npm install my-module 安装不同版本的反应,或者以某种方式导致更多反应以某种方式捆绑在最终捆绑包中(但我什至不确定)。
react 对my-react-component 应该是什么类型的依赖项(如果有),我如何将它实际链接到我的模块?
例如,将 externals 与 webpack 一起使用与实际使用 import React from 'react'?
构建
如果我将我的 repo 设置为使用最新和最伟大的 JS(甚至不是 JS?),我应该如何发布以及发布什么?
import Foo from 'foo' //<-- where does 'foo' point and what is 'foo'?
【问题讨论】:
-
投票结束?去掉编译部分能解决问题吗?
标签: javascript npm bundling-and-minification