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
进行其他任何操作。您几乎不必显式设置preinstall
或install
脚本。如果您这样做,请考虑是否有其他选择。install
或preinstall
脚本的唯一有效用途是编译必须在目标架构上完成。
特别是对于 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 是不是也构建库?的主要内容,如果未能解决你的问题,请参考以下文章
运行 `npm install` 时是不是可以覆盖本地 .npmrc?
`npm install`卡住不动,使用`sudo npm install`就可以下载依赖包
npm install 是不是总是获得最新的*兼容*版本的依赖项?