node.js - 使 npm 包子模块可用

标签 node.js npm requirejs

我有一个私有(private)库,打算在两个代码库之间共享。
它的结构如下:

package.json
src/
 |_stores/
     |_user.js
 |_actions/
     |_user.js

该项目称为“foo”,我想做如下导入:
require('foo/stores/user');
// OR
import User from 'foo/stores/user';

做这个的最好方式是什么?

我已阅读 this OP这表明我可以将 package.json 复制到 lib文件夹,但它缺乏更多的细节?

我尝试过的事情:

由于代码是 ES2015/React/Flux 我正在使用 babelgulpprepublish script建立一个lib npm install上的目录看起来像这样:
package.json
src/
 |_stores/
     |_user.js
 |_actions/
     |_user.js
lib/
 |_stores/
     |_user.js
 |_actions/
     |_user.js

但是,这只能通过以下方式获得:require('foo/lib/stores/user')因此,我将预发布脚本更改为构建到父目录,从而导致:
package.json
stores/
 |_user.js
actions/
 |_user.js
src/
 |_stores/
     |_user.js
 |_actions/
     |_user.js

但是,在本地开发期间(使用 npm 链接/文件依赖项),这会变得有点困惑。

我还尝试将 package.json 符号链接(symbolic link)到 lib和设置main指向lib但这似乎没有做任何事情。

最佳答案

事实证明,我试图做的事情违背了惯例。自从写了这个问题以来,我注意到大多数库通过 package/lib/dep 引用它们的依赖项。 .所以简而言之,我做了以下问题中提到的:

使用带有 prepublish 的 webpack(或 babel 和 gulp)在 npm install 上构建 lib 目录的脚本,如下所示:

package.json
src/
 |_stores/
     |_user.js
 |_actions/
     |_user.js
lib/
 |_stores/
     |_user.js
 |_actions/
     |_user.js

这将允许您执行以下操作:require('foo/lib/stores/user')

关于node.js - 使 npm 包子模块可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38191329/

相关文章:

node.js - 如何将旧版本的 Node 应用程序设置为过时?

html - 传递给 Handlebars 模板的数据未显示在客户端

linux - 安装 npm、nodejs - 使用 laravel gulp

javascript - n 模块中断 npm

angular - 作业名称 "..getProjectMetadata"不存在

javascript - 页面加载时有很多请求(require.js)

javascript - MVC .NET 中的 Requirejs 加载竞赛问题

javascript - 将自定义 Jquery 插件与 requireJS 一起使用

javascript - Mongoose 不创建 TTL 索引

javascript - 错误 : incorrect header check when running post