【问题标题】:Make npm package sub-modules available使 npm 包子模块可用
【发布时间】:2016-11-06 13:49:46
【问题描述】:

我有一个私有库,旨在在两个代码库之间共享。 它的结构如下:

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 scriptnpm install 上构建一个 lib 目录,如下所示:

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 符号链接到 lib 并将 main 设置为指向 lib 但这似乎没有任何作用。

【问题讨论】:

    标签: node.js npm requirejs


    【解决方案1】:

    事实证明,我试图做的事情违反了惯例。自从写了这个问题以来,我注意到大多数库通过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')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-21
      • 2016-05-26
      • 2021-04-12
      • 2016-04-21
      • 2023-04-10
      • 2023-01-23
      • 2017-07-20
      相关资源
      最近更新 更多