我来自 Java 世界,习惯使用 Maven 和 Eclipse 进行编码,这使得使用本地依赖项变得非常容易,因为 IDE + M2Eclipse 插件能够解析工作区中的依赖项。
现在,我正在使用 NPM 和 VS Code 在 JavaScript 中进行开发,我发现您必须使用手动选项(例如npm link + npm build --watch或 )npm pack + npm install <path>来处理本地依赖项。
我正在开发一个 Angular 应用程序,其代码库分为不同的 Git 项目和 npm 包,因此我们浪费了大量时间来测试本地依赖项,而且很容易出错。
我猜这是由于 JavaScript 和 Npm 的不同性质造成的,但是,是否有任何插件或选项可以简化 VS Code 中的本地开发?
编辑:我看过这篇关于 Yarn Workspaces 的文章,它看起来像我正在寻找的...... npm 中有类似的东西吗?我看到 Lerna 是一个选项,但仅适用于 monorepos,我为每个库分离了 Git 存储库。
EDIT2:为了澄清问题,假设我正在开发两个 Angular 库,每个库都位于不同的 Angular 工作区。库 A 依赖于库 B。我使用 VS Code 工作区同时打开这两个 Angular 工作区并一起编辑它们。如果我更改库 BI 必须构建它并链接它,以便我可以在发布之前在库 A …
在网上搜索了在 Npm 中模拟 Maven 快照版本行为的解决方案后,我做了一些测试并找到了适合我的解决方法。
如果您愿意的话,我希望您给我一些反馈,如果您知道任何其他可能的解决方法,或者我在这方面是否遗漏了什么,请告诉我。
我看到的唯一缺点是必须在文件夹中检查已安装依赖项的实际版本node_modules,因为我正在使用npm update --no-save以避免在package.json安装或更新后替换我的范围表达式。
您可以在我的github中找到代码和文档。
图书馆:
package.json:
"version": "0.0.0-snapshot.0"
Run Code Online (Sandbox Code Playgroud)"scripts": {
"publish:snapshot": "npm run version:snapshot && npm publish --tag snapshot",
"version:snapshot": "npm version prerelease --preid snapshot"
}
Run Code Online (Sandbox Code Playgroud)package.json应用:
package-lock.json并npm install "dependencies": {
"npm-test-lib-a": ">=0.0.0-snapshot.0"
}
Run Code Online (Sandbox Code Playgroud)npm update <package> --no-save
Run Code Online (Sandbox Code Playgroud)node_modules图书馆:
"scripts": {
"publish:release": …Run Code Online (Sandbox Code Playgroud)我正在尝试为使用 Swagger 自动生成的 api 客户端生成一个库,并在我的 Angular7 应用程序中本地使用它,但我无法使其工作:-(
该库在应用程序中正确生成和导入,VSCode 中没有警告/错误,但是当我在应用程序中运行 ng build 命令时,它会引发以下错误:
ERROR in ./src/app/diary/diary-data.service.ts
Module not found: Error: Can't resolve 'lib-diary-shoot-api-client/lib/api/api' in 'D:\DANI\vscode\dairy-shoot\src\app\diary'
ERROR in ./src/app/app.module.ts
Module not found: Error: Can't resolve 'lib-diary-shoot-api-client/public_api' in 'D:\DANI\vscode\dairy-shoot\src\app'
Run Code Online (Sandbox Code Playgroud)
我尝试将使用 Swagger 自动生成的 api 客户端复制到我的应用程序中,并且它运行良好,因此我放弃了代码中的任何问题。
我认为在将代码封装到库中或从我的应用程序手动导入代码时,它一定是我做错或遗漏的事情。
我尝试逐步重现它:
使用 angular-cli 创建库
将 api 客户端文件复制到 /lib 文件夹中
在 index.ts 中导出的内部文件:
export * from './api/api';
export * from './model/models';
export * from './variables';
export * from './configuration';
export * from './api.module';
Run Code Online (Sandbox Code Playgroud)
用 angular-cli 生成的库
将 /dist/lib 文件复制到应用程序中 …