如何在npm包中添加文件夹作为条目?

时间:2019-04-06 06:59:08

标签: javascript node.js npm node-modules yarnpkg

我正在尝试发布一个npm模块。其中具有以下文件夹结构。 enter image description here

在我的[['a'],['b'],['c'],['a','b'],['b','c'],['c','a'],['a','b'],['a','b','c'],['b','c','a'],['c','a','b'],['a','b','c','a'],['b','c','a','b'],['a','b','c','a','b']] 中,有package.json"main": "./dist/"的解决方法。但是在dist文件夹中,我有名为index.jsstring.jsclass.js的单个文件,我打算将它们导入为 dom.js,但现在我必须将其导入为import { isValidZipCode } from '@scope/utils/string';

import { isValidZipCode } from '@scope/utils/dist/string';导入模块时,是否可以解析文件夹?

编辑:主要思想是当我保留单个文件进行单个导出时,将文件导入为node_modules

3 个答案:

答案 0 :(得分:0)

index文件夹中创建一个root文件,然后像这样导出所有文件

export { default as Str } from "./dist/string";
export { default as Cls } from "./dist/class";
export { default as Dom } from "./dist/dom";

,还将package.jsonmain的{​​{1}}更新为./dis/

希望这会对您有所帮助。编码愉快。

答案 1 :(得分:0)

您需要做的就是在根文件夹中创建一个索引文件,然后使用以下命令导出所有文件:

在您的<httpRuntime targetFramework="4.5" /> 中,导出其上的每个方法/函数,并对其进行索引:

dist/string

因为它有助于维护代码并看上去更简洁

此致:)

答案 2 :(得分:0)

其他答案大部分是正确的,但我认为缺少一件事(无论是从您的 OG 帖子还是从他们的答案中),那就是:

  1. 您的文件夹结构绝对不标准,这可能会导致您当前的问题以及当您试图找到答案时在 Google 搜索中没有帮助的结果。
  2. 您没有显示您的 package.jsonwebpack.config.js 文件内容,即使您的文件结构如此奇怪,这些内容也是回答问题的关键。

一些建议:

  1. 将您的文件夹结构更改为类似于

    /
    |--src
        |--utils
            |--string.js
            |--[... other js files]
            |--index.js
    |--dist (will be generated automatically)
    |--[config files, like package.json, webpack.config.js, etc]
    
  2. 使您的 webpack.config.js 具有以下内容:

    output: {
        path: path.resolve(__dirname, 'dist'),
        //...
    }
    plugins: [
        new CopyWebpackPlugin({
            patterns: [
                'ReadMe.md', // optional
                'package.json',
                'LICENSE.md' // optional
            ]
        })
    ],
    

    为了修复/标准化输出(例如输出将是 /dist/utils/[string.js, ...], /dist/package.json)。

    然后,让你的 package.json main 像

    "main": "utils/string.js"
    

这样做之后,你的输出应该看起来像

/
|--src
    |--utils
        |--string.js
        |--[... other js files]
        |--index.js
|--dist
    |--utils
        |--string.js
        |--[... other js files]
        |--index.js // optional: only if you want to support stuff like
                    // `import { isValidZip } from '@scope/utils';`
    |--package.json
|--[config files, like package.json, webpack.config.js, etc]

最后,您需要 cd dist 并从里面运行 npm publish。 (这就是为什么您需要该目录中的 package.json。)

我无法详细介绍 @scope 部分,因为我自己还没有这样做过,但我为自己的一个项目执行了上述操作,并且按预期工作。