如何设置依赖关系以及如何编译 npm 模块?
how to set dependencies and how to compile an npm module?
我发布了一些 npm 模块,所有模块都是针对现有库的,例如 three.js 或 react。
这些包似乎已经下载了,但我没有收到关于它是否正确完成的反馈。
依赖关系
定义依赖关系的高级目标是什么?
three.js:
这令人困惑,因为每个 "extension" 只是假设在某些上下文中有一个可用的 THREE
对象。
My three.js module 因此只提到:
"devDependencies": {
"three": "^0.88.0"
}
它被这样使用:
require( 'three-instanced-mesh' )(THREE)
这既有道理也没有道理。
如果没有 three.js 和传入的适当上下文 (THREE
),该模块将无法工作,但由于我在 运行 时间 (?) 传入它,所以它不会看起来它不是真正的依赖项。当我签出 repo 并想在其中开发时,如果我想让代码 运行.
,我确实需要安装 three.js
反应
我已经发布了 a React component,我打算这样使用它:
npm install my-module
import MyModule from 'my-module
<MyModule/>
出于某种原因,我将 React 列为 peerDependencies
部门。
JSX 中的 <MyModule/>
意味着我已经做了一些事情来响应已经在这个上下文中可用(类似于 THREE
在第一个例子中是如何传递的?)。
这里的区别是我没有在 运行 时定义 class,因此调用 import MyModule
需要在 MyModule.js
中使用 React?
这里期望的目标是什么以及如何描述它?我只知道我不想 npm install my-module
安装不同版本的 React,或者以某种方式将更多 React 捆绑在最终包中(但我什至不确定)。
react
对 my-react-component
应该有什么类型的依赖(如果有),我实际上如何 link 它对我的模块?
例如,在 webpack 中使用 externals
与使用实际的 import React from 'react'
?
建造
如果我将我的存储库设置为使用最新最好的 JS(或者甚至不是 JS?),我应该如何发布以及发布什么?
import Foo from 'foo' //<-- where does 'foo' point and what is 'foo'?
What is the high level goal when defining dependencies?
您必须定义哪些依赖项仅在开发时使用 (devDependencies),哪些依赖项在有人安装您的包时需要并自动安装 (dependencies),以及您需要可用的依赖项,但是您希望用户安装(老实说,这没有意义)peerDependencies。
The difference here is that i don't define the class at runtime, and thus calling import MyModule requires react to be available in MyModule.js?
需要 React 在导入文件的地方可用,即:A 导入 myModule
,但 A 必须已导入 React。放置为对等依赖确实是最好的方法。
For example using the externals thing with webpack vs having an actual import React from 'react'?
在 webpack 中使用 externals 只是告诉 webpack 不要捆绑 react,并表示 react 将在导入此组件之前导入。
If i set up my repo to work with the latest and the greatest of JS (or not even JS?), how and what should i publish?
通常是 index.js 包含库 minified/bundled 的文件。使用 npm 发布,您需要在 package.json
上设置主字段
import Foo from 'foo' //<-- where does 'foo' point and what is 'foo'?
foo
指向您创建的包的名称,即:发布此包的名称。当您转到 npmjs.org 并搜索 foo 时,这就是包。 foo 在你的 node_modules.
我发布了一些 npm 模块,所有模块都是针对现有库的,例如 three.js 或 react。
这些包似乎已经下载了,但我没有收到关于它是否正确完成的反馈。
依赖关系
定义依赖关系的高级目标是什么?
three.js:
这令人困惑,因为每个 "extension" 只是假设在某些上下文中有一个可用的 THREE
对象。
My three.js module 因此只提到:
"devDependencies": {
"three": "^0.88.0"
}
它被这样使用:
require( 'three-instanced-mesh' )(THREE)
这既有道理也没有道理。
如果没有 three.js 和传入的适当上下文 (THREE
),该模块将无法工作,但由于我在 运行 时间 (?) 传入它,所以它不会看起来它不是真正的依赖项。当我签出 repo 并想在其中开发时,如果我想让代码 运行.
three.js
反应
我已经发布了 a React component,我打算这样使用它:
npm install my-module
import MyModule from 'my-module
<MyModule/>
出于某种原因,我将 React 列为 peerDependencies
部门。
<MyModule/>
意味着我已经做了一些事情来响应已经在这个上下文中可用(类似于 THREE
在第一个例子中是如何传递的?)。
这里的区别是我没有在 运行 时定义 class,因此调用 import MyModule
需要在 MyModule.js
中使用 React?
这里期望的目标是什么以及如何描述它?我只知道我不想 npm install my-module
安装不同版本的 React,或者以某种方式将更多 React 捆绑在最终包中(但我什至不确定)。
react
对 my-react-component
应该有什么类型的依赖(如果有),我实际上如何 link 它对我的模块?
例如,在 webpack 中使用 externals
与使用实际的 import React from 'react'
?
建造
如果我将我的存储库设置为使用最新最好的 JS(或者甚至不是 JS?),我应该如何发布以及发布什么?
import Foo from 'foo' //<-- where does 'foo' point and what is 'foo'?
What is the high level goal when defining dependencies?
您必须定义哪些依赖项仅在开发时使用 (devDependencies),哪些依赖项在有人安装您的包时需要并自动安装 (dependencies),以及您需要可用的依赖项,但是您希望用户安装(老实说,这没有意义)peerDependencies。
The difference here is that i don't define the class at runtime, and thus calling import MyModule requires react to be available in MyModule.js?
需要 React 在导入文件的地方可用,即:A 导入 myModule
,但 A 必须已导入 React。放置为对等依赖确实是最好的方法。
For example using the externals thing with webpack vs having an actual import React from 'react'?
在 webpack 中使用 externals 只是告诉 webpack 不要捆绑 react,并表示 react 将在导入此组件之前导入。
If i set up my repo to work with the latest and the greatest of JS (or not even JS?), how and what should i publish?
通常是 index.js 包含库 minified/bundled 的文件。使用 npm 发布,您需要在 package.json
上设置主字段import Foo from 'foo' //<-- where does 'foo' point and what is 'foo'?
foo
指向您创建的包的名称,即:发布此包的名称。当您转到 npmjs.org 并搜索 foo 时,这就是包。 foo 在你的 node_modules.