Javascript 如何告诉npm使用父项目';什么是依赖关系?

Javascript 如何告诉npm使用父项目';什么是依赖关系?,javascript,node.js,npm,webpack,material-ui,Javascript,Node.js,Npm,Webpack,Material Ui,我想解释一下npm模块在安装时的构建方式,我将给出一个示例: 当我查看目录时,有源代码但没有生成文件,当我查看我的项目node\u modules/material ui目录时,我可以看到该目录仅包含生成文件(es5,uglify) 我想知道魔法是怎么发生的?我看到package.json中有构建脚本,但是没有任何东西告诉npm在安装时运行它,我缺少什么 谢谢通常模块不会在客户端机器上构建,因为这需要额外的时间,并且可能会失败,因为它们使用的是不支持构建工具的Node.js的旧版本,当然也需要安

我想解释一下npm模块在安装时的构建方式,我将给出一个示例:

当我查看目录时,有源代码但没有生成文件,当我查看我的项目
node\u modules/material ui
目录时,我可以看到该目录仅包含生成文件(es5,uglify)

我想知道魔法是怎么发生的?我看到
package.json中有构建脚本,但是没有任何东西告诉npm在安装时运行它,我缺少什么


谢谢

通常模块不会在客户端机器上构建,因为这需要额外的时间,并且可能会失败,因为它们使用的是不支持构建工具的Node.js的旧版本,当然也需要安装构建工具,这会使过程更长。而是在发布之前构建它。GitHub上的内容与实际发布到npm注册表的内容不同。大多数模块不会将内置源代码检入GitHub(尽管有些人更喜欢这样)

大概
materialui
手动执行此过程,并且只发布构建的源代码,如中所示

其他一些包,如使用
prepublish
hook,它在运行
npm publish
()时,在发布之前构建必要的源代码,这反映了您在中看到的已发布包。它与GitHub上的原始源代码非常接近,但只包含相关文件,包括其文件中的构建文件。由于许多文件不需要发布(例如
test
目录、
rollup.config.js
等),并且只会占用客户端上的空间,因此可以指定仅发布列出的文件()


当涉及到发布时,您碰巧选择了一个相当混乱的包,其中包含
材质ui
,而
redux
更容易理解。

通常模块不会构建在客户机上,因为这将需要额外的时间,并且可能会失败,因为他们使用的是不支持构建工具的Node.js的旧版本,当然也需要安装构建工具,这将使过程更长。而是在发布之前构建它。GitHub上的内容与实际发布到npm注册表的内容不同。大多数模块不会将内置源代码检入GitHub(尽管有些人更喜欢这样)

大概
materialui
手动执行此过程,并且只发布构建的源代码,如中所示

其他一些包,如使用
prepublish
hook,它在运行
npm publish
()时,在发布之前构建必要的源代码,这反映了您在中看到的已发布包。它与GitHub上的原始源代码非常接近,但只包含相关文件,包括其文件中的构建文件。由于许多文件不需要发布(例如
test
目录、
rollup.config.js
等),并且只会占用客户端上的空间,因此可以指定仅发布列出的文件()


在发布时,您碰巧选择了一个相当混乱的包,其中包含
材质ui
,而
redux
更容易理解。

Michael是正确的,我们发布了构建(基于给出的原因),过程并没有那么复杂
npm build
builds在
build
目录中,将base
package.json
的相关部分复制到
build
中的一个新部分,然后从那里发布。这就省去了所有的麻烦,为您提供了一个干净的软件包。还要记住,如果使用
.gitmignore
忽略构建文件,那么npm也会忽略它们(因此,不会发布它们),除非使用
.npmignore
手动取消它们。有关详细信息,请阅读。Michael是正确的,我们发布了构建(出于给出的原因),并且过程没有那么复杂
npm build
builds在
build
目录中,将base
package.json
的相关部分复制到
build
中的一个新部分,然后从那里发布。这就省去了所有的麻烦,为您提供了一个干净的软件包。还要记住,如果使用
.gitmignore
忽略构建文件,那么npm也会忽略它们(因此,不会发布它们),除非使用
.npmignore
手动取消它们。详细信息请阅读。