【问题标题】:What is the proper package.json manner to publish a npm package developed with Browserify?发布使用 Browserify 开发的 npm 包的正确 package.json 方式是什么?
【发布时间】:2014-03-10 05:16:27
【问题描述】:

我正在发布一个用 Browserify 开发的 npm 包,想知道构造 package.json 的正确方法是什么。

包是node server-client app(其实是atom包),客户端是基于Browseriy的。

./www/js/index.js -> ./www/js/index.bundled.js

需要的模块是marked和highlight.js。

这两个模块仅用于由 Blowserfiy 捆绑的客户端代码/文件。

一个懒惰而简单的解决方案是简单的,只是拥有

package.json A

{
  ......,
  "dependencies":
  {
    ...,
    ...,
    "highlight.js": "*",
    "marked": "*"
  }
}

并在 npm 包文件中包含 www/js/index.bundled.js 文件,就像在我的本地开发环境中的 browserify 之后一样。

但是,现在我认为 npm package.json 可以是以下之一:

package.json B

{
  ......,
  "dependencies":
  {
    ...,
    ...,
  },
  "devDependencies":
  {
    "highlight.js": "*",
    "marked": "*",
    "browserify": "*"
  }
}

在这种情况下,浏览器化的 ./www/js/index.bundled.js 文件留在 npm 包中,并将 marked 和 highlight.js 视为 devDependencies 以及 browserify。

然后

package.json C

{
  ......,
  "dependencies":
  {
    ...,
    ...,
    "highlight.js": "*",
    "marked": "*",
    "browserify": "*"
  },
  "scripts": {
    "run": "browserify ./www/js/index.js -o ./www/js/index.bundled.js"
  }
}

告诉你,我从来没有试过这个,也不知道这个脚本运行实际上是在npm install myPackage上运行的,也许不是,也许你知道正确的配置,也许没有这样的东西。

在这种情况下,./www/js/index.bundled.js 被排除在 npm 包文件之外,并由最新的 npm 打包 marked 和 highlight.js 构建。

我认为这种方式有点合适的原因是特别是在npm模块在服务器端和客户端都使用和共享的场景中。

例如,看看dnode。该 RPC 模块由 browserify (@substack) 的同一作者开发,服务器端和客户端应共享相同版本的 dnode 模块。如果预浏览器化的./www/js/index.bundled.js 捆绑在已发布的 npm 包中,与服务器端 dnode 相比,它将过时。当然我们可以通过 package.json 指定要安装的版本,但最好在服务器端和客户端都使用最新的。

有什么建议吗?谢谢。

【问题讨论】:

    标签: node.js npm browserify


    【解决方案1】:

    我建议使用第二选择并将browserify指定为devDependency。

    您必须在将包发布到 npm 注册表之前构建它,因此用户无需自己安装 browserify。

    添加Makefile 和make 作为预发布脚本也很有用。

    【讨论】:

    • 谢谢。我认为这在模块仅用于客户端时有效,我想知道客户端和服务器端是否共享某些模块。也许,在这种情况下,我们需要指定要同步的模块版本。
    猜你喜欢
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 2018-07-02
    • 2019-12-06
    • 2015-12-23
    相关资源
    最近更新 更多