如何使用私有GitHub仓库作为纱线依赖(内部代表没有安装)?

时间:2018-01-16 10:56:14

标签: javascript node.js github npm ecmascript-6

我正在尝试使用私有GitHub存储库作为我们工作中的一些repos中的依赖项。

在顶级package.json内,我们的dep定义如下:

"mycompany-models": "https://github.com/mycompany/mycompany-models#v1.2.0"

这很好用,源代码按预期安装在顶级node_modules目录中。但是,没有安装任何内部依赖项,所以当我这样做时:

import mycompanyModels from 'mycompany-models'

我得到了各种关于缺失依赖项的错误:

ReferenceError: Unknown plugin "module-resolver" specified
...
Error: Cannot find module 'uuid/v4'

mycompany-models repo中,如果我添加安装步骤,例如:

"install": "npm i"

然后重新安装依赖项,npm只是永远挂起。这里发生了什么?这只是一个坏主意,我被迫转移一切吗?因为这只是一个私人回购,没有pre-publish步骤与npm等...

1 个答案:

答案 0 :(得分:1)

如果没有下载回购,请确保您遵循这种导入回购的方式:https://docs.npmjs.com/files/package.json#git-urls-as-dependencies

示例:

<!DOCTYPE html>
<html>

<head>
  <meta charset="UTF-8">

  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/1.0.3/angular-ui-router.js"></script>
</head>

<body ng-app="Project">
  <div class="mainbox">
    <div class="loginmsg">
      <div class="row text-center">
        <p id="title">
          <b>Movie Baba</b>
        </p>
      </div>
    </div>
    <div class="row">
      <div ui-view></div>
    </div>
  </div>


  <script type="text/ng-template" id="LoginPage.html">
    <div class="row">
      <div class="col-md-3">
        <label>Username : </label>
      </div>
      <div class="col-md-9">
        <input class="form-control" type="text" id="username" ng-model="user.username" name="username" maxlength="50" required>
      </div>
    </div>
  </script>

  <script>
    var Project = angular.module('Project', ['ui.router']);
    Project.config(function($stateProvider, $urlRouterProvider) {
      $urlRouterProvider.otherwise('/login');

      $stateProvider.state('login', {
        url: '/login',
        templateUrl: 'LoginPage.html'
      })
    });
  </script>

</body>

</html>

如果正在安装软件包并且导入失败,请确保repo的package.json上的git+ssh://git@github.com:npm/npm.git#v1.0.27 git+ssh://git@github.com:npm/npm#semver:^5.0 git+https://isaacs@github.com/npm/npm.git git://github.com/npm/npm.git#v1.0.27 属性指向现有文件。 https://docs.npmjs.com/files/package.json#main

除非您需要从导入模块的模块中进行转换,否则应该只需要启动并运行该模块,但这是一个不同的问题。

此外,您获得的错误与未解析的模块一样,请确保这些模块位于模块package.json的main属性中,而不是dependencies属性中。

更新

您使用什么来转换私有模块?

您是否考虑将模块发布到私有npm注册表? https://github.com/rlidwka/sinopia