我正在尝试使用适用于VS2015的NodeJS工具构建节点js project。
在这个解决方案中,有一个主项目在子文件夹中有子项目,即每个子文件夹都有自己的package.json,它们有自己的代码,每个子文件都声明自己对其他项目的依赖。
我遇到的问题是,当我在主项目中执行“npm install”时,“npm”会从npm注册表中下载软件包。
我知道可以使用:
"dependencies": {
"common": "file:path/to/common",
}
但是这种方法迫使我手动维护两个package.json文件并在每次提交时重命名它(项目是开源的,在github上);它很麻烦且容易出错。
我的问题是:我可以为VS配置NodeJS工具来处理调试和发布的两种不同配置吗?即以类似的方式,我可以在C#项目中完成它。
使用package.Debug.json
文件之类的东西......欢迎任何其他方法。
答案 0 :(得分:2)
要做到这一点,您可以使用npm-link在软件包及其源代码之间创建一个链接(这篇文章非常有趣:npm link: developing your own npm modules without tears)
在你的情况下:
npm link
npm link subproject1
... npm link subprojectN
我使用 Visual Studio 2015 对其进行了测试,创建了包含两个项目的解决方案
nodejs-projectdeps
|- nodejs-projectdeps-main
|- nodejs-projectdeps-module1
package.json nodejs-projectdeps-main
{
"name": "nodejs-projectdeps-main",
"version": "0.0.0",
"description": "nodejs-projectdeps-main",
"main": "app.js",
"dependencies": {
"azure": "^0.10.6",
"nodejs-projectdeps-module1": "0.0.0"
}
}
package.json nodejs-projectdeps-module1
{
"name": "nodejs-projectdeps-module1",
"version": "0.0.0",
"description": "nodejs-projectdeps-module1",
"main": "app.js",
"dependencies": {
"dockerctl": "0.0.0"
}
}
然后我在npm link
项目文件夹中执行了nodejs-projectdeps-module1
,结果是:
C:\Users\...\npm\node_modules\nodejs-projectdeps-module1
-> C:\src\nodejs-projectdeps\nodejs-projectdeps-module1
执行npm link in the nodejs-projectdeps-module1
项目文件夹后,结果为:
C:\src\nodejs-projectdeps-main\node_modules\nodejs-projectdeps-module1
-> C:\Users\...\npm\node_modules\nodejs-projectdeps-module1
-> C:\src\nodejs-projectdeps\nodejs-projectdeps-module1
毕竟, Visual Studio 2015 中的解决方案以这种方式显示了依赖关系:
更新:我的测试代码的来源发布在GitHub