是否应该手动编辑package.json?像npm这样的程序难道只能查看文件,查看“require”语句,然后使用它将必要的条目放在package.json文件中吗?有没有这样的节目?
答案 0 :(得分:580)
npm 使用package.json文件来了解您的node.js项目。
使用npm init
为您生成package.json文件!
它与npm捆绑在一起。请在此处阅读其文档:https://docs.npmjs.com/cli/init
此外,您可以在自己的项目中使用一种工具以编程方式生成此文件(由npm的制造商制作):https://github.com/isaacs/init-package-json
答案 1 :(得分:200)
首先,运行
npm init
...会问你一些关于你的项目/包的问题(read this first),然后为你生成一个package.json文件。
然后,一旦有了package.json文件,请使用
npm install <pkg> --save
或
npm install <pkg> --save-dev
...安装依赖项并自动将其附加到package.json
的{{1}}列表。
(注意:您可能需要手动调整依赖项的版本范围。)
答案 2 :(得分:170)
我刚写了一个简单的脚本来收集./node_modules中的依赖项。它满足了我的要求。这可能有助于其他人,我在这里发布。
var fs = require("fs");
function main() {
fs.readdir("./node_modules", function (err, dirs) {
if (err) {
console.log(err);
return;
}
dirs.forEach(function(dir){
if (dir.indexOf(".") !== 0) {
var packageJsonFile = "./node_modules/" + dir + "/package.json";
if (fs.existsSync(packageJsonFile)) {
fs.readFile(packageJsonFile, function (err, data) {
if (err) {
console.log(err);
}
else {
var json = JSON.parse(data);
console.log('"'+json.name+'": "' + json.version + '",');
}
});
}
}
});
});
}
main();
就我而言,上面的脚本输出:
"colors": "0.6.0-1",
"commander": "1.0.5",
"htmlparser": "1.7.6",
"optimist": "0.3.5",
"progress": "0.1.0",
"request": "2.11.4",
"soupselect": "0.2.0", // Remember: remove the comma character in the last line.
现在,您可以复制并粘贴它们。玩得开心!
答案 3 :(得分:78)
npm init
创建package.json文件,然后使用
ls node_modules/ | xargs npm install --save
填写node_modules文件夹中的模块。
编辑:@paldepind指出第二个命令是多余的,因为npm init
现在会自动添加你在node_modules /文件夹中的内容。我不知道是否一直如此,但现在至少,它没有第二个命令。
答案 4 :(得分:24)
命令行:
npm init
将创建package.json文件
在依赖项下安装,更新和卸载软件包到package.json文件中:
命令行:
npm install <pkg>@* --save
会自动将依赖项下包的最新版本添加到package.json文件
中EX:
npm install node-markdown@* --save
命令行:
npm install <pkg> --save
还会自动将依赖项下包的最新版本添加到package.json文件
中如果您需要特定版本的套餐,请使用命令行:
npm install <pkg>@<version> --save
会自动将依赖项下特定版本的软件包添加到package.json文件
中EX:
npm install koa-views@1.0.0 --save
如果您需要特定的软件包版本,请使用命令行:
npm install <pkg>@<version range>
会自动将包的最新版本在依赖项下的版本范围内添加到package.json文件
中EX:
npm install koa-views@">1.0.0 <1.2.0" --save
有关如何为包npm Doc
编写版本的更多详细信息命令行:
npm update --save
会将软件包更新到package.json文件中,并会自动将依赖项下所有软件包的更新版本添加到package.json文件中
命令行:
npm uninstall <pkg> --save
会自动将包从依赖项中删除到package.json文件中并从node_module文件夹中删除包
答案 5 :(得分:13)
正在运行npm init -y
会使您的package.json
具有所有默认值。
然后,您可以相应地更改package.json
这可以通过阻止enter
npm init
来节省时间
答案 6 :(得分:5)
基于Pylinux的回答,下面是Windows操作系统的解决方案,
dir node_modules > abc.txt
FOR /F %k in (abc.txt) DO npm install --save
希望它有所帮助。
答案 7 :(得分:1)
使用命令npm init -f生成package.json文件,然后在每个命令后使用--save,以便每个模块在package.json中自动更新 例如:npm install express --save
答案 8 :(得分:0)
如果你git和GitHub用户:
generate-package
比npm init
更简单。
<强>否则强>
和/或您不喜欢package.json
模板,即generate-package或npm init
生成:
您可以通过脚手架应用生成自己的模板generate,sails或yeoman。
这个答案与2018年3月有关。将来,这个答案的数据可能已经过时了。
本回答的作者在2018年3月亲自使用了generate-package。
您需要使用git和GitHub来使用generate-package。
例如,我创建了空白文件夹sasha-npm-init-vs-generate-package
。
命令:
D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package>gen package
[16:58:52] starting generate
[16:59:01] √ running tasks: [ 'package' ]
[16:59:04] starting package
? Project description? generate-package demo
? Author's name? Sasha Chernykh
? Author's URL? https://vk.com/hair_in_the_wind
[17:00:19] finished package √ 1m
package.json
:
{
"name": "sasha-npm-init-vs-generate-package",
"description": "generate-package demo",
"version": "0.1.0",
"homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package",
"author": "Sasha Chernykh (https://vk.com/hair_in_the_wind)",
"repository": "Kristinita/sasha-npm-init-vs-generate-package",
"bugs": {
"url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
},
"license": "MIT",
"engines": {
"node": ">=4"
},
"scripts": {
"test": "mocha"
},
"keywords": [
"generate",
"init",
"npm",
"package",
"sasha",
"vs"
]
}
D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package>npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
package name: (sasha-npm-init-vs-generate-package)
version: (1.0.0) 0.1.0
description: npm init demo
entry point: (index.js)
test command: mocha
git repository: https://github.com/Kristinita/sasha-npm-init-vs-generate-package
keywords: generate, package, npm, package, sasha, vs
author: Sasha Chernykh
license: (ISC) MIT
About to write to D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package\package.json:
{
"name": "sasha-npm-init-vs-generate-package",
"version": "0.1.0",
"description": "npm init demo",
"main": "index.js",
"scripts": {
"test": "mocha"
},
"repository": {
"type": "git",
"url": "git+https://github.com/Kristinita/sasha-npm-init-vs-generate-package.git"
},
"keywords": [
"generate",
"package",
"npm",
"package",
"sasha",
"vs"
],
"author": "Sasha Chernykh",
"license": "MIT",
"bugs": {
"url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
},
"homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package#readme"
}
Is this ok? (yes) y
{
"name": "sasha-npm-init-vs-generate-package",
"version": "0.1.0",
"description": "npm init demo",
"main": "index.js",
"scripts": {
"test": "mocha"
},
"repository": {
"type": "git",
"url": "git+https://github.com/Kristinita/sasha-npm-init-vs-generate-package.git"
},
"keywords": [
"generate",
"package",
"npm",
"package",
"sasha",
"vs"
],
"author": "Sasha Chernykh",
"license": "MIT",
"bugs": {
"url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
},
"homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package#readme"
}
我认为generate-package
更简单,即npm init
。
答案 9 :(得分:0)
npm add <package-name>
以上命令会将包添加到节点模块并更新package.json文件
答案 10 :(得分:-1)
package.json
,请使用npm init -y
然后你可以做
npm i <module-name>
并将该模块添加到 package.json