复制资产作为 Angular 9 库构建的一部分
Copy assets as part of Angular 9 Library build
我正在读这个:https://angular.io/guide/creating-libraries 上面写着:
Starting with version 9.x of the ng-packagr tool, you can configure the tool to automatically copy assets into your library package as part of the build process. You can use this feature when your library needs to publish optional theming files, Sass mixins, or documentation (like a changelog).
link 带你到这里:https://github.com/ng-packagr/ng-packagr/blob/master/docs/copy-assets.md
对我来说,这太模棱两可了。它没有告诉您将该选项放在哪里,但从描述来看,它听起来像是 options:
的一部分
"options": {
"tsConfig": "projects/situ-angular-components/tsconfig.lib.json",
"project": "projects/situ-angular-components/ng-package.json",
"assets": [
"CHANGELOG.md",
"./styles/**/*.theme.scss"
]
},
如果我这样做,我会得到这个错误:
Schema validation failed with the following errors:
Data path "" should NOT have additional properties(assets).
我的完整 angular.json 看起来像这样:
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"situ-angular-components": {
"projectType": "library",
"root": "projects/situ-angular-components",
"sourceRoot": "projects/situ-angular-components/src",
"prefix": "situ",
"schematics": {
"@schematics/angular:component": {
"styleext": "scss"
}
},
"architect": {
"build": {
"builder": "@angular-devkit/build-ng-packagr:build",
"options": {
"tsConfig": "projects/situ-angular-components/tsconfig.lib.json",
"project": "projects/situ-angular-components/ng-package.json",
"assets": [
"CHANGELOG.md",
"./styles/**/*.theme.scss"
]
},
"configurations": {
"production": {
"tsConfig": "projects/situ-angular-components/tsconfig.lib.prod.json"
}
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "projects/situ-angular-components/src/test.ts",
"tsConfig": "projects/situ-angular-components/tsconfig.spec.json",
"karmaConfig": "projects/situ-angular-components/karma.conf.js"
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"projects/situ-angular-components/tsconfig.lib.json",
"projects/situ-angular-components/tsconfig.spec.json"
],
"exclude": ["**/node_modules/**"]
}
}
}
}
},
"cli": {
"analytics": "8db81fee-b0bd-41b0-a453-27aa6be6cc88"
},
"defaultProject": "situ-angular-components"
}
如果我将 assets 移动到下面的级别,我不会收到任何错误,但不会复制任何资产:
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"situ-angular-components": {
"projectType": "library",
"root": "projects/situ-angular-components",
"sourceRoot": "projects/situ-angular-components/src",
"prefix": "situ",
"schematics": {
"@schematics/angular:component": {
"styleext": "scss"
}
},
"architect": {
"build": {
"builder": "@angular-devkit/build-ng-packagr:build",
"options": {
"tsConfig": "projects/situ-angular-components/tsconfig.lib.json",
"project": "projects/situ-angular-components/ng-package.json"
},
"assets": [
"CHANGELOG.md",
"./styles/**/*.theme.scss"
],
"configurations": {
"production": {
"tsConfig": "projects/situ-angular-components/tsconfig.lib.prod.json"
}
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "projects/situ-angular-components/src/test.ts",
"tsConfig": "projects/situ-angular-components/tsconfig.spec.json",
"karmaConfig": "projects/situ-angular-components/karma.conf.js"
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"projects/situ-angular-components/tsconfig.lib.json",
"projects/situ-angular-components/tsconfig.spec.json"
],
"exclude": ["**/node_modules/**"]
}
}
}
}
},
"cli": {
"analytics": "8db81fee-b0bd-41b0-a453-27aa6be6cc88"
},
"defaultProject": "situ-angular-components"
}
有谁知道我做错了什么吗?
我想通了。
您只需编辑 ng-package.json 文件并添加您的资产:
"assets": [
".npmrc"
],
这将复制您的文件。
我正在读这个:https://angular.io/guide/creating-libraries 上面写着:
Starting with version 9.x of the ng-packagr tool, you can configure the tool to automatically copy assets into your library package as part of the build process. You can use this feature when your library needs to publish optional theming files, Sass mixins, or documentation (like a changelog).
link 带你到这里:https://github.com/ng-packagr/ng-packagr/blob/master/docs/copy-assets.md
对我来说,这太模棱两可了。它没有告诉您将该选项放在哪里,但从描述来看,它听起来像是 options:
的一部分"options": {
"tsConfig": "projects/situ-angular-components/tsconfig.lib.json",
"project": "projects/situ-angular-components/ng-package.json",
"assets": [
"CHANGELOG.md",
"./styles/**/*.theme.scss"
]
},
如果我这样做,我会得到这个错误:
Schema validation failed with the following errors: Data path "" should NOT have additional properties(assets).
我的完整 angular.json 看起来像这样:
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"situ-angular-components": {
"projectType": "library",
"root": "projects/situ-angular-components",
"sourceRoot": "projects/situ-angular-components/src",
"prefix": "situ",
"schematics": {
"@schematics/angular:component": {
"styleext": "scss"
}
},
"architect": {
"build": {
"builder": "@angular-devkit/build-ng-packagr:build",
"options": {
"tsConfig": "projects/situ-angular-components/tsconfig.lib.json",
"project": "projects/situ-angular-components/ng-package.json",
"assets": [
"CHANGELOG.md",
"./styles/**/*.theme.scss"
]
},
"configurations": {
"production": {
"tsConfig": "projects/situ-angular-components/tsconfig.lib.prod.json"
}
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "projects/situ-angular-components/src/test.ts",
"tsConfig": "projects/situ-angular-components/tsconfig.spec.json",
"karmaConfig": "projects/situ-angular-components/karma.conf.js"
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"projects/situ-angular-components/tsconfig.lib.json",
"projects/situ-angular-components/tsconfig.spec.json"
],
"exclude": ["**/node_modules/**"]
}
}
}
}
},
"cli": {
"analytics": "8db81fee-b0bd-41b0-a453-27aa6be6cc88"
},
"defaultProject": "situ-angular-components"
}
如果我将 assets 移动到下面的级别,我不会收到任何错误,但不会复制任何资产:
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"situ-angular-components": {
"projectType": "library",
"root": "projects/situ-angular-components",
"sourceRoot": "projects/situ-angular-components/src",
"prefix": "situ",
"schematics": {
"@schematics/angular:component": {
"styleext": "scss"
}
},
"architect": {
"build": {
"builder": "@angular-devkit/build-ng-packagr:build",
"options": {
"tsConfig": "projects/situ-angular-components/tsconfig.lib.json",
"project": "projects/situ-angular-components/ng-package.json"
},
"assets": [
"CHANGELOG.md",
"./styles/**/*.theme.scss"
],
"configurations": {
"production": {
"tsConfig": "projects/situ-angular-components/tsconfig.lib.prod.json"
}
}
},
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"main": "projects/situ-angular-components/src/test.ts",
"tsConfig": "projects/situ-angular-components/tsconfig.spec.json",
"karmaConfig": "projects/situ-angular-components/karma.conf.js"
}
},
"lint": {
"builder": "@angular-devkit/build-angular:tslint",
"options": {
"tsConfig": [
"projects/situ-angular-components/tsconfig.lib.json",
"projects/situ-angular-components/tsconfig.spec.json"
],
"exclude": ["**/node_modules/**"]
}
}
}
}
},
"cli": {
"analytics": "8db81fee-b0bd-41b0-a453-27aa6be6cc88"
},
"defaultProject": "situ-angular-components"
}
有谁知道我做错了什么吗?
我想通了。 您只需编辑 ng-package.json 文件并添加您的资产:
"assets": [
".npmrc"
],
这将复制您的文件。