首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许直接导入npm模块中的文件,如送交

允许直接导入npm模块中的文件,如送交
EN

Stack Overflow用户
提问于 2018-08-11 04:55:28
回答 2查看 1.2K关注 0票数 5

Lodash允许像

代码语言:javascript
复制
import merge from 'lodash/merge';

这大大减少了导入的大小。我维护一个名为react-spinners的npm模块,并且希望允许相同的导入。

https://github.com/davidhu2000/react-spinners

例如,当前导入的方式是

代码语言:javascript
复制
import { BarLoader } from 'react-spinners';

我想让

代码语言:javascript
复制
import BarLoader from 'react-spinners/BarLoader';

根据我的发现,要做到这一点,我需要有以下文件夹结构

代码语言:javascript
复制
main
  - index.js <- the file that exports everything
  - BarLoader.js
  - ... other loaders

这个结构非常混乱,因为所有js文件都将位于根目录中。

我现在的设置是

代码语言:javascript
复制
main
  - index.js
  - dist <- output folder from compiling
    - index.js
    - BarLoader.js
  - src <- uncompiled react code
    - index.js
    - BarLoader.js

因此,目前,为了只导入一个加载程序,

代码语言:javascript
复制
import BarLoader from 'react-spinners/dist/BarLoader';

我找不到任何可以告诉我如何从上面的语句中删除dist的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-12 23:22:47

如果您真的想处理npm包,您可以在主包文件夹上创建一个类似BarLoader.js的文件,并且只导出BarLoader(就像index.js导出所有项目一样)。

然后您就可以通过

代码语言:javascript
复制
import BarLoader from 'react-spinners/BarLoader';

但是我不推荐它,因为为每个导入创建一个文件是一项繁琐的任务--我想这是一个公平的问题,import BarLoader from 'react-spinners/dist/BarLoader';有什么问题?也许是代码可读性?

票数 1
EN

Stack Overflow用户

发布于 2019-02-25 10:56:37

我也遇到了同样的问题,并对此做了一些研究。

哈克费克斯

使用Webpack,可以使用config.resolve.alias,如下所示:

代码语言:javascript
复制
const webpackCfg = {
  // ...
  resolve: {
    alias: {
     'react-spinners': path.resolve(__dirname, 'node_modules/react-spinners/dist')
    }
  }
  // ...
};

这样,所有文件都将直接在dist文件夹中查找。

  1. import reactSpinners from 'react-spinners';解析为<root>/node_modules/react-spinners/dist (或node_modules/react-spinners/dist/index.js)
  2. import BarLoader from 'react-spinners/BarLoader'会解决<root>/node_modules/react-spinners/dist/BarLoader等..。

洛达什是怎么做到的?

正如房客在他们的自述和这条线中所指出的

Lodash存储库不是纯源代码,而是“作为UMD模块导出的Lodash”。他们进一步解释:

使用生成:

代码语言:javascript
复制
$ npm run build
$ lodash -o ./dist/lodash.js
$ lodash core -o ./dist/lodash.core.js

但是,他们也提到了这里,他们希望在没有Lodash v5中的两个单独的存储库的情况下完成这项工作。看看他们是怎么做的会很有趣的!

我自己做了一些实验,但我还不能让它发挥作用。例如,我试图链接到dist文件夹,并在每次构建后将修改后的package.json版本复制到其中,这就开始起作用了。但有时,依赖项目会对文件夹开始变得混乱感到不快。我确信,这是可行的(基本上将source + dist混合到dist文件夹中),但它开始感觉就像一个兔子洞,所以我还没有继续追求这条路径(相当)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51796591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档