npm install 是不是也构建库?

Posted

技术标签:

【中文标题】npm install 是不是也构建库?【英文标题】:Does npm install also builds the library?npm install 是否也构建库? 【发布时间】:2016-05-01 21:09:25 【问题描述】:

我有一个关于 npm 的问题。 also tried on reddit.

我们以jQuery npm 为例。 当我npm install jquery 我在我的node_modules 文件夹中找到一个jquery 文件夹, 在其中我找到了dist,即使它在.gitignore 中被忽略了。

这里是包的脚本:

"scripts": 
"build": "npm install && grunt",
"start": "grunt watch",
"test": "grunt && grunt test"
,

Grunt 还用于构建 - 在我的 node_modules 中找不到(使用 npm5)。

dist 文件夹从哪里来??

以jQuery为例,虽然我见过很多这样的包。

提前致谢

【问题讨论】:

你看过你的 .npmignore 文件了吗? 【参考方案1】:

npm install 是否也构建库?

一般来说:这取决于。您可以在package.json文件中的scripts section中指定install脚本,当有人运行npm install <package>时执行该脚本,但建议不要这样做:

不要使用install。使用.gyp 文件进行编译,使用prepublish 进行其他任何操作。您几乎不必显式设置 preinstallinstall 脚本。如果您这样做,请考虑是否有其他选择。 installpreinstall 脚本的唯一有效用途是编译必须在目标架构上完成。


特别是对于 jQuery,它似乎是(手动)构建的,之前它被发布到 npm。 jQuery 使用grunt 来构建库。这将生成dist 文件夹:

    build: 
        all: 
            dest: "dist/jquery.js",
            minimum: [
                "core",
                "selector"
            ],

更重要的是,jQuery 有一个.npmignore 文件,这意味着在 npm 上发布包时,会使用该文件而不是 .gitignore。如您所见,它确实排除dist/文件夹,因此在发布到npm时包含该文件夹。

所以似乎有人运行这些步骤来发布新版本的 jQuery:

npm run build
npm publish

【讨论】:

以上是关于npm install 是不是也构建库?的主要内容,如果未能解决你的问题,请参考以下文章

vue windows搭建开发环境

运行 `npm install` 时是不是可以覆盖本地 .npmrc?

`npm install`卡住不动,使用`sudo npm install`就可以下载依赖包

npm install 是不是总是获得最新的*兼容*版本的依赖项?

npm install使用^ dependency而不是完全匹配

为 Node 模块强制安装 yarn 而不是 npm install?