package.json 应该手动编辑吗?像 npm 这样的程序不能只查看文件,查看“require”语句,然后使用它将必要的条目放入 package.json 文件中吗?有没有这样的程序?
npm link
npm 使用 package.json 文件来了解您的 node.js 项目。
使用 npm init
为您生成 package.json 文件!
它与 npm 捆绑在一起。在此处阅读其文档:https://docs.npmjs.com/cli/init
此外,您还可以使用官方工具以编程方式生成此文件:https://github.com/npm/init-package-json
首先,运行
npm init
...将询问您一些关于您的项目/包的问题 (read this first),然后为您生成一个 package.json 文件。
然后,一旦你有一个 package.json 文件,使用
npm install <pkg> --save
或者
npm install <pkg> --save-dev
...安装依赖项并将其自动附加到您的 package.json
的 dependencies
列表中。
(注意:您可能需要手动调整依赖项的版本范围。)
package.json
,它通常会自动处理。
--save
我只是写了一个简单的脚本来收集 ./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.
现在,您可以复制和粘贴它们。玩得开心!
npm ls --depth=0
将打印或多或少相同(但不确定 2012 年是否是这种情况)
a
,而包 a
需要包 b
和 c
,则此脚本将输出所有级别,因此 a
、b
、c
不是 正确。它应该只输出a
,子包将被自动解析。
npm init
创建 package.json 文件,然后使用
ls node_modules/ | xargs npm install --save
填写您在 node_modules 文件夹中的模块。
编辑:@paldepind 指出第二个命令是多余的,因为 npm init
现在会自动添加您在 node_modules/ 文件夹中的内容。我不知道这是否一直如此,但至少现在,它可以在没有第二个命令的情况下工作。
npm init
已根据已安装的包自动添加依赖项,无需运行第二个命令。
npm dedupe
时也非常有用,它将模块之间共享的依赖项从这些模块中提取出来,并将它们存储在 node_modules
目录的顶层。但它没有触及 package.json
!有了这个,您可以提交和共享您的重复数据删除设置。
命令行:
npm init
将创建 package.json 文件
将依赖项下的包安装、更新和卸载到 package.json 文件中:
命令行 :
npm install <pkg>@* --save
将自动将依赖项下的包的最新版本添加到 package.json 文件中
前任:
npm install node-markdown@* --save
命令行:
npm install <pkg> --save
还会自动将依赖项下的包的最新版本添加到 package.json 文件中
如果您需要包的特定版本,请使用此命令行:
npm install <pkg>@<version> --save
会自动将依赖项下的特定版本包添加到 package.json 文件中
前任:
npm install koa-views@1.0.0 --save
如果您需要包的特定版本范围,请使用此命令行:
npm install <pkg>@<version range>
将自动将依赖项下的版本范围之间的包的最新版本添加到 package.json 文件中
前任:
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 文件夹中删除包
运行 npm init -y
使您的 package.json
具有所有默认值。
然后您可以相应地更改 package.json
这可以通过防止在 npm init
中的每个命令上按 enter
来多次节省时间
您现在可以通过 3 个简单的步骤在节点终端上使用 Yeoman - Modern Web App Scaffolding Tool。
首先,您需要安装 yo 和其他必需的工具:
$ npm install -g yo bower grunt-cli gulp
要搭建 Web 应用程序,请安装 generator-webapp 生成器:
$ npm install -g generator-webapp // create scaffolding
运行哟......你都完成了:
$ yo webapp // create scaffolding
Yeoman 可以为您的整个 Web 应用程序或控制器和模型编写样板代码。它可以启动实时预览网络服务器进行编辑和编译;不仅您还可以运行单元测试、最小化和连接代码、优化图像等等……
Yeoman (yo) - 提供特定于框架的脚手架生态系统(称为生成器)的脚手架工具,可用于执行前面提到的一些乏味任务。
Grunt / gulp - 用于构建、预览和测试您的项目。
Bower - 用于依赖管理,因此您不再需要手动下载前端库。
基于 Pylinux 的回答,下面是 Windows 操作系统的解决方案,
dir node_modules > abc.txt
FOR /F %k in (abc.txt) DO npm install --save
希望能帮助到你。
使用命令 npm init -f 生成 package.json 文件,然后在每个命令之后使用 --save 以便每个模块将自动在 package.json 中更新,例如: npm install express --save
1. 选择
如果你是 git 和 GitHub 用户:
generate-package
比 npm init
更简单。
别的
和/或您不喜欢该 generate-package 或 npm init
生成的 package.json
模板:
您可以通过 generate、sails 或 yeoman 等脚手架应用生成自己的模板。
2.相关性
此答案与 2018 年 3 月相关。将来,此答案中的数据可能已过时。
此答案的作者在 2018 年 3 月亲自使用了 generate-package。
3. 限制
您需要使用 git 和 GitHub 来使用 generate-package。
4. 示范
例如,我创建空白文件夹 sasha-npm-init-vs-generate-package
。
4.1。生成包
命令:
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"
]
}
4.2. npm 初始化
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
。
5.定制
创建您自己的 package.json
模板,请参阅 generate 和 yeoman 示例。
npm add <package-name>
上述命令会将包添加到节点模块并更新 package.json 文件
简短回答:要将现有已安装的 npm 模块添加到不存在的 package.json 中,请使用
npm init -y
那么你随后可以做
npm i <module-name>
它会将该模块添加到 package.json
不定期副业成功案例分享
npm init
正是我想要的!之后,我通常会运行npm shrinkwrap
来创建npm-shrinkwrap.json
文件npm init
:之后使用npm install <pkg> --save
安装软件包并将其作为依赖项保存在 package.json 文件中。npm init
后,它只显示[...] Press ^C at any time to quit.
并停止而不询问任何内容或创建 json 文件。我错过了什么吗?npm init --force --yes
是生成此文件的唯一一行