【问题标题】:When does a build happen when you deploy a NPM package with devDependencies?当您使用 devDependencies 部署 NPM 包时,构建何时发生?
【发布时间】:2017-11-06 11:33:56
【问题描述】:

我看到大多数 package.json 在他们的 devDependency 列表中都有 webpackbabel。因此,如果不需要这些来使用该包,那一定意味着必须在项目安装该包之前使用这些 devDependencies,对吗?这什么时候发生?它看起来像以下任何一个步骤吗?

  1. 部署包
  2. 包被构建
  3. 捆绑包和依赖项在线托管
  4. npm install $package 只会获取捆绑包和依赖项

  1. 部署包
  2. 包以及依赖项和 devDependencies 在线托管
  3. npm install $package 将导致构建包,并且生成的包将与依赖项一起下载

如果图中根本没有 devDependencies,那么一个依赖 webpack 和 babel 将其 es6 转为 es5 的包如何与仅在 es5 中的项目一起工作?

【问题讨论】:

    标签: javascript node.js npm webpack dependencies


    【解决方案1】:

    修改给定库需要开发依赖项,使用该库不需要它们。当库维护者将库上传到 npm 时,他们首先使用这些开发依赖项构建库,然后上传构建的文件。所以你不需要开发依赖来使用这个库,维护者已经为你做了这个构建。

    【讨论】:

    • 你怎么知道需要使用什么和修改库?比如react是一个依赖,但是为什么不能是一个devdependency呢?不是用来构建所用包的最终构建吗?
    【解决方案2】:

    所以给出你的答案。让我们谈谈开发依赖性

    babel 用于将最新的 es6 不可计算代码转换为 node.js 不可计算代码。 与 webpack 在开发周期中使用的方式相同

    它们在开发时用于简化开发代码。

    给你的问题答案。

    这意味着必须在项目之前使用这些 devDependencies 安装那个包,对吧?

    是的,它们在包由它的开发者开发时使用。

    什么时候发生?

    当任何人开发包时。比如你创建了一个项目,想压缩js文件,在开发过程中包含js压缩器。

    它看起来像以下任何一个步骤吗?

    deploy package (create a package)
    package gets built 
    bundle along with dependencies are hosted online
    npm install $package will only get bundle and dependencies
    

    【讨论】:

    • 所以如果你安装一个包,你永远不会在你的 node_moules 中得到那个包的源代码,对吧?你只得到成品,也就是构建?
    • 如果你得到的是构建,为什么它也需要依赖呢?构建已经准备好自己使用了,对吗?它是用 devDependencies 和依赖项构建的,所以当你安装它时,这些依赖项不应该存在于该包的 node_modules 中,不是吗?
    猜你喜欢
    • 2020-10-06
    • 2014-11-29
    • 2016-03-02
    • 1970-01-01
    • 2020-06-03
    • 2021-05-13
    • 2015-06-12
    • 2018-04-17
    • 1970-01-01
    相关资源
    最近更新 更多