2

我正在基于 AngularJS 和 Typescript 在 Visual Studio 中建立一个项目,一旦我需要安装依赖项,我就不得不处理另一个包管理器,这有点令人沮丧。

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

我们以 npm 为例。我将 packages.json 放在./SolutionDirectory/MyApp.Web/ 但是当我运行npm install时,我只得到ENOENT: No such file or directory。因为 cwd 是 ./SolutionDirectory

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

对于 bower,我可以通过传递额外的参数来处理类似的问题,例如:

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 位置传递给 typings?为安装的类型传递目标目录位置?

  3. 对 Nuget 来说同样可行吗?

4

2 回答 2

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

不,没有。目前没有办法覆盖cwdnpm 中的值。您应该移动目录并运行它:

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

这是与此类似的讨论:https ://github.com/npm/npm/pull/10958

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

从技术上讲是的,但我想你只想typings installtypings.json. 如何使用npm 生命周期脚本typings.json进入相同的路径package.json并使用?

$ 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 来说同样可行吗?

Nuget 也是包管理器,所以它应该有类似的功能,比如命令nuget mirror可以是我猜的。从技术上讲,这是一个不同的软件,但我认为了解这两个软件是了解彼此概念和总结的好方法。npm config set registrynuget localesnpm cache

于 2016-04-19T10:44:12.460 回答
1

对于 npm:

npm install <folder>

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

对于打字:

typings install [<name>=]<location>

<location>是通往typings.json

对于 NuGet:

nuget install packageId|pathToPackagesConfig [options]

pathToPackagesConfigpackages.config文件的路径。

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

于 2016-04-25T13:55:04.093 回答