是否应该手动编辑package.json?像npm这样的程序难道不只是浏览文件,查看“ require”语句,然后使用该语句将必要的条目放入package.json文件中吗?有这样的程序吗?
是否应该手动编辑package.json?像npm这样的程序难道不只是浏览文件,查看“ require”语句,然后使用该语句将必要的条目放入package.json文件中吗?有这样的程序吗?
Answers:
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
正是我一直在寻找谢谢!同样在那之后,我通常会运行npm shrinkwrap
一个npm-shrinkwrap.json
文件来创建文件
npm init
:npm install <pkg> --save
之后用于安装软件包,并将其另存为package.json文件中的依赖项。
npm init
从Visual Studio 2015在Package Manager控制台中运行后,它只会显示[...] Press ^C at any time to quit.
并停止,而不会询问任何内容或创建json文件。我想念什么吗?
npm init --force --yes
是生成此文件的一个衬板
首先,运行
npm init
...会问您几个问题(请先阅读此内容有关您的项目/软件包的),然后为您生成一个package.json文件。
然后,一旦有了package.json文件,请使用
npm install <pkg> --save
要么
npm install <pkg> --save-dev
...安装依赖项并将其自动附加到您package.json
的dependencies
列表中。
(注意:您可能需要手动调整依赖项的版本范围。)
package.json
,它通常是自动处理的。
--save
在新的npm版本中不再需要
我只是编写了一个简单的脚本来收集./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
,
这样可以避免多次按enter
以下命令来节省时间:npm init
现在,您可以通过3个简单的步骤在节点终端上使用Yeoman-Modern Web App脚手架工具。
首先,您需要安装yo和其他必需的工具:
$ npm install -g yo bower grunt-cli gulp
要搭建Web应用程序,请安装generator-webapp generator:
$ npm install -g generator-webapp // create scaffolding
运行哟,...您都完成了:
$ yo webapp // create scaffolding
Yeoman可以为整个Web应用程序或Controllers and Models编写样板代码。它可以启动实时预览Web服务器进行编辑和编译。您不仅可以运行单元测试,最小化和连接代码,优化图像等等,还可以...
Yeoman(yo) -脚手架工具,提供了框架特定的脚手架生态系统,称为生成器,可用于执行前面提到的一些繁琐的任务。
Bower-用于依赖性管理,因此您不再需要手动下载前端库。
如果您是git和GitHub用户:
generate-package
比npm init
。
其他
和/或您不喜欢package.json
模板,生成包或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
。
npm link