npm install是否也构建了库?

时间:2016-01-25 14:09:22

标签: javascript jquery node.js npm

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

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

以下是包的脚本:

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

Grunt用于构建尚未在我的node_modules中找到(使用npm5)。

鸭子是dist文件夹来自哪里?

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

提前致谢

1 个答案:

答案 0 :(得分:4)

  

npm install是否也构建了库?

一般来说:这取决于。您可以在install文件的scripts section中指定package.json脚本,该脚本在有人运行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