导入 npm 模块作为源代码

Posted

技术标签:

【中文标题】导入 npm 模块作为源代码【英文标题】:Import npm module as source code 【发布时间】:2019-01-08 12:18:08 【问题描述】:

我想导入vue-form-generator 的源代码,对源代码进行一些更改。作为 Node 和 javascript 的新手,我真的不知道自己在做什么。有人可以指导我完成这些步骤吗?

由于我的 Vue 项目是在 Typescript 中,以前我在使用 npm install vue-form-generator 时创建了 vfg.d.ts

declare module "vue-form-generator" 
  const VueFormGenerator: any;
  export default VueFormGenerator;

而我的main.ts

import VueFormGenerator from 'vue-form-generator';
Vue.component('VueFormGenerator', VueFormGenerator);

现在我已将 /src 中的所有内容复制到我的 /src/component/form-generator 中,但不知道如何制作,因此我可以像以前一样使用。

【问题讨论】:

我不明白你为什么还不只是使用npm install 方法? @Paul 我需要更改他们为每个输入生成模板的方式,据我所知,他们的版本中没有为此提供任何功能,因此我需要更改 formGenerator.vue 中的源代码 【参考方案1】:

如果您要创建自己的 vue-form-generator 分支,也可以在此处添加类型声明。

在您的src/component/form-generator 副本中创建文件index.d.ts

  const VueFormGenerator: any;
  export default VueFormGenerator;

那里不需要declare module ...,因为这个index.d.ts就在index.js旁边,所以TypeScript编译器应该在你导入它时找到它

import VueFormGenerator from './relative-path-to/form-generator/index';

生成的 javascript 代码会在那里找到 index.js。请注意,导入路径必须是相对的,否则,如果没有任何路径映射,它将在 node_modules 中查找模块,而不是在您的源代码中。

您还必须删除项目中对先前类型声明文件vfg.d.ts 的所有引用。

【讨论】:

以上是关于导入 npm 模块作为源代码的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 webpack 4 和 babel 7 导入 soap-npm 模块

Jest 无法从 npm 链接模块转换导入

从 npm 本地导入 ES 模块依赖项,无需捆绑/转译第一方源

如何将 ES6 导入与“请求”npm 模块一起使用

如何从 node_modules 文件夹导入 sass 主题模块

访问JSX文件中的非es6 npm模块函数