包裹管理器的自定义路径,如Nuget / npm / bower / typings

时间:2016-04-06 13:11:30

标签: npm bower bower-install npm-install tsd

我正在基于AngularJS和Typescript在Visual Studio中设置一个项目,有点令人沮丧的是,一旦我需要安装依赖项,我就必须处理另一个包管理器。

我遇到的问题是包管理器要求包含依赖项的文件位于特定位置。

我们以npm为例。 我将packages.json放在 ./ SolutionDirectory / MyApp.Web / 但是当我运行 npm install 时,我只是得到 ENOENT:没有这样的文件或目录。因为cwd是./ ResolutionDirectory

如果我正在使用cd ./SolutionDirectory/MyApp.Web并在此之后运行npm install,它可以正常工作。

对于凉亭我只能通过传递其他参数来处理类似问题:

bower install --config.cwd =。/ SolutionDirectory / MyApp.Web / app / lib --config.directory = vendor

此命令只从./SolutionDirectory/MyApp.Web/app/lib获取bower.json,并将软件包安装到./SolutionDirectory/MyApp.Web/app/lib/vendor

  1. 在安装之前,是否有办法将packages.json位置传递给npm?

  2. 有没有办法在安装之前将typings.json位置传递给打字机?传递安装类型的目标目录位置?

  3. 对Nuget来说是否可行?

2 个答案:

答案 0 :(得分:1)

  1. 在安装之前,是否有办法将packages.json位置传递给npm?
  2. 不,没有。目前无法在npm中覆盖cwd值。您应该移动目录并运行它:

    `$ cd SolutionDirectory/MyApp.Web/ && npm install`
    

    以下是对此的类似讨论:https://github.com/npm/npm/pull/10958

    1. 有没有办法在安装之前将typings.json位置传递给打字机?传递安装类型的目标目录位置?
    2. 技术上是的,但我想您只想typings install typings.json。如何将typings.json放在与package.json相同的路径并使用npm lifecycle script

      $ ls
      package.json typings.json
      $ cat package.json
      {
        "name": "name",
        "version": "1.0.0",
        "description": "",
        "main": "index.js",
        "scripts": {
          "postinstall": "typings install"
        },
        "keywords": [],
        "author": "",
        "license": "ISC",
        "devDependencies": {
          "typings": "^0.7.12"
        }
      }
      $ npm install
      => after npm install, typings install will start with typings.json
      
      1. 对Nuget来说是否可行?
      2. Nuget也是包管理器,因此它应该具有类似的功能,例如nuget mirror命令可以是npm config set registrynuget locales可以是npm cache我猜。从技术上讲,它是一个不同的软件,但我认为对这两个软件的理解是了解彼此概念和总结的好方法。

答案 1 :(得分:1)

适用于npm:

npm install <folder>

<folder>是包含package.json文件的文件夹的路径。

对于打字:

typings install [<name>=]<location>

<location>typings.json

的路径

对于NuGet:

nuget install packageId|pathToPackagesConfig [options]

pathToPackagesConfigpackages.config文件的路径。

因此,回答这个问题,是的,可以为所有这些包管理器指定配置文件位置的路径。