【问题标题】:npm main:index.js for browser reposnpm main:index.js 用于浏览器存储库
【发布时间】:2017-12-23 18:17:38
【问题描述】:

我有几个想要在 npm 上发布的存储库。但这些是浏览器存储库,因此会产生问题:package.json 中的 main 属性似乎用于指定节点(不是浏览器)模块。

来自https://docs.npmjs.com/files/package.json#main

主要

主字段是一个模块 ID,它是程序的主要入口点。也就是说,如果您的包名为 foo,并且用户安装了它,然后执行了 require("foo"),那么您的主模块的导出对象将被返回。

这应该是相对于包文件夹根目录的模块 ID。

对于大多数模块来说,拥有一个主脚本是最有意义的,而其他的通常不多。

那么我应该为浏览器 repos 的 npm 包使用什么?只是省略字段?指向回购包?还有什么?

【问题讨论】:

  • Rollup repo 有这个讨论:github.com/rollup/rollup/wiki/pkg.module。基本上看起来“main”应该指向一个“legacy”包,而“module”(或“jsnext:main”)应该指向一个现代的ES模块(我的dist /中都有)。这是标准吗?它似乎适用于浏览器或节点模块。

标签: browser npm module package.json


【解决方案1】:

我又查看了几个浏览器存储库,看来这是当前的约定(取自 Three.js 和 Rollup github 存储库):

  • “main”:“build/three.js”,
  • "jsnext:main": "build/three.module.js",
  • “模块”:“build/three.module.js”

main 指向 <script> 代码,而 jsnext:mainmodule 指向 es6 模块。

模块包有一些命名约定:

  • foo.module.js
  • foo.es.js
  • foo.mjs

等等。

https://github.com/rollup/rollup/wiki/pkg.module,上面提到的,似乎是一个合理的参考。谷歌了解更多:

main jsnext:main 模块属性 package.json

底线:有约定但没有标准。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-16
    • 2011-12-01
    • 2014-07-20
    • 2021-10-13
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多