我有一个关于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为例虽然我见过很多这样的软件包。
提前致谢
答案 0 :(得分:4)
npm install是否也构建了库?
一般来说:这取决于。您可以在install
文件的scripts
section中指定package.json
脚本,该脚本在有人运行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