web-dev-qa-db-ja.com

Node.jsプロジェクト用のpackage.jsonファイルを自動的にビルドする方法はありますか

Package.jsonは手動で編集されるべきですか? npmのようなプログラムは単にファイルを調べ、「require」ステートメントを見て、それを使用して必要なエントリをpackage.jsonファイルに入れることができませんでしたか?そのようなプログラムはありますか?

383
neuromancer

Package.jsonファイルは、node.jsプロジェクトについて知るために npm によって使用されます。

npm initを使用してpackage.jsonファイルを生成してください。

Npmにバンドルされています。こちらのドキュメントを読んでください: https://docs.npmjs.com/cli/init

また、あなたがあなた自身のプロジェクトでプログラム的にこのファイルを生成するために使うことができるツールがあります(それはnpmのメーカーによって作られます): https://github.com/isaacs/init-package-json

579
Ore4444

最初に実行します

npm init

...あなたのプロジェクト/パッケージについていくつか質問し( 最初に読んでください )そしてそれからあなたのためにpackage.jsonファイルを生成します。

その後、package.jsonファイルを入手したら、次のコマンドを使用します。

npm install <pkg> --save

または

npm install <pkg> --save-dev

...依存関係をインストールし、それをpackage.jsondependenciesリストに自動的に追加します。

(注:依存関係のためにバージョン範囲を手動で微調整する必要があるかもしれません。)

199
nzondlo

./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.

今、あなたはそれらをコピー&ペーストすることができます。楽しむ!

169
douyw

npm init

package.jsonファイルを作成してから使用する

ls node_modules/ |xargs npm install --save

node_modulesフォルダーにあるモジュールを入力します。

編集:@paldepindはnpm initが自動的にあなたのnode_modules /フォルダにあるものを追加するので、2番目のコマンドは冗長であると指摘しました。これが常にそうであるかどうかはわかりませんが、少なくとも今では、2番目のコマンドがなくても機能します。

77
Pylinux

コマンドライン

npm init

package.jsonファイルを作成します

依存関係にあるパッケージをpackage.jsonファイルにインストール、更新、およびアンインストールするには、次の手順を実行します。

コマンドライン

npm install <pkg>@* --save 

依存関係にあるパッケージの最新バージョンをpackage.jsonファイルに自動的に追加します。

例:

npm install node-markdown@* --save

コマンドライン

npm install <pkg> --save

また、依存関係にあるパッケージの最新バージョンをpackage.jsonファイルに自動的に追加します。

ifあなたはパッケージの特定のバージョンが必要ですコマンドライン

npm install <pkg>@<version> --save

依存関係にあるパッケージの特定のバージョンをpackage.jsonファイルに自動的に追加します。

例:

npm install [email protected] --save

ifあなたはパッケージに特定の範囲のバージョンが必要ですコマンドライン

npm install <pkg>@<version range>

package.jsonファイルに依存関係にあるバージョンの範囲の間でパッケージの最新バージョンを自動的に追加します

例:

npm install koa-views@">1.0.0 <1.2.0" --save

Forパッケージのバージョンの書き方についての詳細 npm Doc

コマンドライン

npm update --save

パッケージをpackage.jsonファイルに更新し、依存関係にあるすべてのパッケージの更新バージョンをpackage.jsonファイルに自動的に追加します。

コマンドライン

npm uninstall <pkg> --save

パッケージを依存関係からpackage.jsonファイルに自動的に削除し、node_moduleフォルダーからパッケージを削除します

24
ahmed hamdy

npm init -yを実行すると、あなたのpackage.jsonはすべてデフォルトになります。
その後、package.jsonを適宜変更できます
これは、npm initのすべてのコマンドでenterを押さないようにすることで時間を何度も節約します。

13
Abhinav Singi

3つの簡単なステップを使用して、ノード端末で Yeoman - Modern Web App足場ツール を使用できるようになりました。

まず、あなたは他の必要なツールをインストールする必要があります。

$ 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 - は依存関係管理に使われるので、フロントエンドライブラリを手動でダウンロードする必要はもうありません。

6
Adesh M

Pylinuxの答えに基づいて、以下はWindows OS用の解決策です、

dir node_modules > abc.txt
FOR /F %k in (abc.txt) DO npm install --save

それが役に立てば幸い。

4
Anmol Saraf

npm init -fコマンドを使用してpackage.jsonファイルを生成し、その後各コマンドの後に--saveを使用して、各モジュールがpackage.json内で自動的に更新されるようにします。npm install express --save

1
Nitin Nodiyal

1.選択

もし ならあなたはgitそしてGitHubユーザー:

generate-package もっと簡単に言うと、npm initより。

その他

および/または package.jsonテンプレートが好きではありません、generate-packageまたはnpm init generate:

generate sails または yeoman のように、足場アプリを介して独自のテンプレートを生成できます。


2.関連性

この答えは2018年3月に関連しています。将来、この答えからのデータは時代遅れになるかもしれません。

この回答の作者は2018年3月にgenerate-packageを個人的に使用しました。


制限事項

Generate-packageを使うにはgitとGitHubを使う必要があります。


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 init

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 examplesを見てください。