0

当我构建我的角度库应用程序时,我会在文件夹中获得工件dist/。这意味着当库被导入另一个应用程序时,它是这样完成的:

import { XXX } from 'libname/dist'

但是,我希望 import 语句没有 dist 文件夹。我无法更改运行 npm publish 命令的目录,因此需要使用 .npmignore 或 package.json (文件或主)属性的解决方案(如果可能)。

这可能吗?此处发布了相同的问题,请在此处输入链接描述,但我不确定如何删除 dist 文件夹并使用 npmignore、文件和主要属性将文件/子文件夹保留在包中。

4

1 回答 1

0

您的库必须具有以下angular.json配置architect > options > project

"my-library": {
  "projectType": "library",
 ...
  "architect": {
    "build": {
      "builder": "@angular-devkit/build-ng-packagr:build",
      "options": {
 ...
        "project": "projects/my-library/ng-package.json"
      },
 ...

并且您的 ng-package.json 文件必须是:

{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/my-library",
  "lib": {
    "entryFile": "src/public-api.ts",
    "umdModuleIds": {
    }
  }
}

您还必须有一个public-api.ts文件:

// public-api.ts
/*
 * Public API Surface of my-library
 */

export * from './lib/my-library.module';
...

你有所有这些文件和配置吗?

这些都是在您创建库时应该自动进行的配置。作为参考,您可以观看: https ://angular.io/guide/creating-libraries

更新:

“目前我正在将我的 package.json 复制到 dist 文件夹中,然后在 dist 文件夹中运行 npm pack。”

使用 gulp 批处理,您可以将 package.json 从 root 复制到 dist:

// /gulpfile.js 
var gulp = require('gulp');

gulp.task('default', [], function() {
  gulp.src(['../../my-library/package.json']) // pay attenction to your relative path where you run gulp.
      .pipe(gulp.dest('my-library/dist'));
});

要运行它:

gulp default

在 gulp 文件目录中。

npm pack然后在 dist 文件夹中尝试。

于 2020-05-05T13:19:47.560 回答