【问题标题】:Installing npm packages via jspm with dependencies通过带有依赖项的 jspm 安装 npm 包
【发布时间】:2020-01-10 08:46:54
【问题描述】:

我知道我可以通过运行 jspm 来安装 npm 软件包:jspm install npm:<pkg-name>,这将允许我在开发中使用它(例如,在我的 JS 文件中:import myPackage from 'myPackage';)。

如果npm 包的package.json 文件包含依赖项,我希望它也将它们安装在包中。所以在那个包文件夹中,我希望有一个带有包的node_modules 文件夹。但是,当我运行命令安装 npm 软件包时,它不会安装 node_modules,我必须手动转到文件夹并运行 npm install 才能显示这些。这意味着如果不手动运行此命令,我将无法引用包本身中的其他文件/依赖项。有什么我可以通过jspm 运行来确保这些安装的吗?

【问题讨论】:

    标签: javascript npm jspm


    【解决方案1】:

    不,您不能在 JSPM 中执行当前操作,我相信 JSPM 还没有真正解析 NPM 包。我认为有这方面的工作,但在我发言时不可用。

    我建议你看看下面的maven插件:

    Front end plugin

    我们已在多个项目中使用它,它允许您运行多种不同的安装方式,以便您可以将项目绑定在一起。

    您需要从这里安装 maven 3:

    Maven download

    然后,您将需要一个基本的 pom.xml 来运行 jspm install 以及一个 npm install。 然后,您也可以运行您的 Karma 测试并从此设置进行编译。

    来自文档:

    <execution>
        <id>jspm install</id>
        <goals>
            <goal>jspm</goal>
        </goals>
    
        <configuration>
            <!-- optional: The default argument is actually
            "install", so unless you need to run some other jspm command,
            you can remove this whole <configuration> section.
            -->
            <arguments>install</arguments>
        </configuration>
    </execution>
    

    将开始 jspm 安装,最后:

    <execution>
        <id>npm install</id>
        <goals>
            <goal>npm</goal>
        </goals>
    
        <!-- optional: default phase is "generate-resources" -->
        <phase>generate-resources</phase>
    
        <configuration>
            <!-- optional: The default argument is actually
            "install", so unless you need to run some other npm command,
            you can remove this whole <configuration> section.
            -->
            <arguments>install</arguments>
        </configuration>
    </execution>
    

    将为您提供 npm 安装。这将为您安装所有东西,并为您的环境提供一站式服务。我们使用这个工具已经有一段时间了,它一直被认为是可靠、灵活的,并且可以将各种工具绑定在一起 - 它也得到了很好的支持。

    【讨论】:

      【解决方案2】:

      这是您可以运行的命令列表:

      jspm install npm:myDependency
      jspm install --no-optionnal
      jspm install github:authorGithubAccount/myDependency
      npm install myDependency
      

      两者都有一些依赖关系,但并非总是如此,而且结构不同。 虽然 jspm 可以处理 node.js 模块系统。 也许您尝试添加的依赖项没有 node_modules。

      【讨论】:

        【解决方案3】:

        另一种选择

        作为替代方案,我可以建议 dynamic-cdn-webpack-plugin,诀窍是在开发环境中,您的项目中将有 node_modules 文件夹,而对于生产,它将从 cdn 服务器注入依赖项。

        ? 优势

        • 您将收到cache benefits
        • 包体积小,因为它只包含应用程序代码。

        ? 缺点

        例如,您可以查看此project

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-06
          • 2017-09-30
          • 2018-12-16
          • 1970-01-01
          • 2016-03-14
          • 2013-01-17
          相关资源
          最近更新 更多