2

我使用 NPM 在我的 MVC 5 Web 项目中维护前端依赖项。我对 NPM 的主要用途之一是为事物获取 Typescript 定义。

该项目是这样组织的:

MySolution
|
|-- MySolution.Web
    |
    |-- Controllers
    |-- node_modules
    |-- Views
    |-- (etc...)

我想知道的是我是否应该将“node_modules”包含到项目中,以及是否应该将“node_modules”包含到源代码控制中。

我问的原因是,一切似乎都对它被排除在外(甚至是构建代理,它在编译之前执行“NPM 恢复”)感到满意。

但是,NCrunch 抱怨它找不到对我项目的 TypeScript 文件引用的各种类型的任何引用。

例如 Admin.ts 引用“/node_modules/@types/knockout/index.d.ts”

我认为将“node_modules”引入网络项目可以解决它,但我不确定它是否正确。

4

1 回答 1

1

不,您不应该将其包含在源代码管理或项目中。

假设您从头开始进行完整克隆,您首先要做的是npm install,它将恢复所有包并填充该文件夹。这与您也不添加 NuGet 包之类的东西的原因完全相同。

该文件夹很容易变得非常大并延迟您的 CI/CD 管道。正如您自己所说,运行npm install无论如何都可以自动完成。例如,如果您为 Visual Studio 下载了一个 git ignore 文件,它会附带默认情况下忽略的内容,这是有充分理由的。

就您的打字稿文件而言,这些也应该没问题。无论如何,在进行任何工作之前,您都将首先进行还原,并且您可以使用 Visual Studio Code 之类的东西来处理您的前端文件,节点模块是否是您的解决方案的一部分并不重要。

于 2018-05-15T16:08:28.887 回答