角度示意图-文件未安装

时间:2019-03-17 08:53:23

标签: angular angular-schematics

我正在构建Angular自定义原理图。 我创建了文件目录,它看起来像这样:

files directory
我正在尝试将此组件添加到最终应用中。 我的索引文件看起来像这样:

function addSideNav(options: any) {
return (host: Tree, context: SchematicContext) => {
try {

  host.delete('src/app/app.component.html');

  const workspace = getWorkspace(host);
  if (!options.project) {
    options.project = Object.keys(workspace.projects)[0];
  }
  const project = getProject(host, options.project);

  if (options.path === undefined) {
    options.path = buildDefaultPath(project);
  }

  const templateSource = apply(url('./files'), [
    template({
      ...options,
      ...strings
    }),
    move(options.path)
  ]);

  // context.logger.log("info", `✅️ Added SideNav to the tree`);
  return mergeWith(templateSource);

} catch (e) {
  context.logger.log("error", ` Failed to add the SideNav to the tree`);
  throw new SchematicsException(`Error detailes: ${e}`);
}};}

此后,我将这样调用此函数:

export default function (options: any): Rule {
return chain([
    addPackageJsonDependencies(),
    installPackageJsonDependencies(),
    addSideNav(options),
    addMaterialStyle(options),
    addPolyfillToScripts(options),
    addToAppModule(options)

]); }

当我在本地使用npm链接进行测试时-效果很好。一切都很好。

但是当我发布npm并从npm安装它时-除了ts文件之外,所有文件都已创建:

side.nav.component.ts

我没有收到任何警告。

我在这里想念什么?

2 个答案:

答案 0 :(得分:1)

好吧,默认情况下它会忽略.ts文件,因为shematics在生成的版本上运行,并且不需要来自Schemas api的源文件,例如index.ts或schema.ts文件。因此请注意,您应该仅添加以下内容来忽略所需的目录:

# Ignores TypeScript files, but keeps definitions.
*.ts
!*.d.ts    
# Not ignoring component files
!src/your-schematics/files/**/*.ts

答案 1 :(得分:0)

解决了。 事实证明,发布到npm是一个问题。由于某种未知的原因,创建了.npmignore个文件-不知道如何创建,并且在其中看到了这样的信息:

*.ts

所以基本上,当我发布时,它会忽略所有打字稿文件。