1

我在https://github.com/AkashGutha/generator-stencil为 stenciljs 编写生成器

我有一个位于项目根目录的小型实用程序函数。它只是一个utils/composeObjects.js导出一个函数的文件composeObjs。我在生成器的所有子生成器中都使用了这个函数。我在这些地方使用它:

  • app/index.js
  • page/index.js
  • component/index.js

我正在使用本地测试我的生成器npm link,然后当我yo stencil在一个空文件夹中进行测试时,生成器可以正常工作。

但是,当我npm publish尝试运行yo stencil它时,它会引发以下错误。

module.js:538
    throw err;
    ^

Error: Cannot find module '../utils/composeObjects'
    at Function.Module._resolveFilename (module.js:536:15)
    at Function.Module._load (module.js:466:25)
    at Module.require (module.js:579:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/Akash/.npm-global/lib/node_modules/generator-stencil/app/index.js:5:21)
    at Module._compile (module.js:635:30)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)

搜索后我发现当全局安装包时 require 不能按预期工作。但是,我查看了 github 上的其他一些生成器,其中一些使用了某种 util 函数,并且在全局安装时它们工作正常。

我也怀疑这可能是因为运行的主模块是 main yeoman,因为yo stencil告诉yeoman cli使用它generator

我需要摆脱这个错误也将是 niec 了解导致此模块错误的原因。

这是 github 问题:https ://github.com/AkashGutha/generator-stencil/issues/1

4

1 回答 1

1

听起来您的生成器可能正在从 npm 包中删除您的 util 文件。这可能是由.npmignore文件引起的,或者文件/文件夹未包含在您的package.json files属性中。

于 2018-04-24T02:05:23.343 回答