我已经通过npm install $package
安装了一些软件包,但没有首先设置package.json
。
现在我想创建一个package.json
文件,但保留所有已安装的包作为依赖项。
仅仅运行npm init
不提供此选项,我可以自动实现吗?
答案 0 :(得分:32)
2016年1月更新
npm 现在支持开箱即用。我有npm版本 3.5.2 。
所以只安装了 node_modules 文件夹下划线。
npm init --yes
然后:
cat package.json
包含在package.json中:
"dependencies": {
"underscore": "^1.8.3"
},
答案 1 :(得分:25)
更新:随着npm v3的推出,此技巧将在package.json
文件上创建大量不需要的条目。那是因为@ sunny-mittal指出模块依赖性现在已经变平了。
npm
不支持这一点。您必须重新安装通过--save
的每个包到每个包。
但是,如果您使用的是基于Unix的系统,那么就有一种解决方法。从您的项目根文件夹中,已经创建了package.json
文件(npm init
,如您所述),运行:
npm install $(ls node_modules/) --save
它将重新安装软件包,并将其package.json
保存为dependencies
。
答案 2 :(得分:3)
由于NPM node_modules
现在已经持平,而且@ Rodrigo的回答与此无关。
这就是我编织在一起的东西。
npm list --depth=0 | sed "1d" | sed -E "s/^[\`+-]+\s//" | sed -E "s/@(.*)$//"
这基本上是ls node_modules
之前所做的。
单行保存已安装。
npm install $(npm ls | sed "1d" | sed -E "s/^[\`+-]+\s//" | sed -E "s/@(.*)$//") --save
我正在使用
$ npm --version
3.5.3
哪个列表是这样的。
$ npm list --depth=0
x@0.1.0 /home/victor/x
+-- babel-eslint@5.0.0-beta6
+-- babel-preset-es2015@6.3.13
+-- gulp@3.9.0
+-- gulp-babel@6.1.1
`-- gulp-eslint@1.1.1
答案 3 :(得分:2)
我写了一个名为pkg-save的模块 如果你的npm版本是" 2.x.x"。你可以尝试一下 我没有在npm v3中测试过,所以我不知道它是否在npm v3中有用。
答案 4 :(得分:-1)
当我从bitbucket克隆一个新项目时,我遇到了这个问题。我通过以下步骤解决了这个问题:
private static void testWithThreads() {
final Worker worker = new Worker();
new Thread(() -> {
System.out.println("start read thread");
for (int i = 0; i < 20; i++) {
worker.readData();
// any thread can now invoke writeData() if current thread is before next invocation of worker.readData();
}
try {
Thread.currentThread().join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
new Thread(() -> {
System.out.println("start write thread");
for (int i = 0; i < 20; i++) {
worker.writeData();
// any thread can now invoke readData() if current thread is before next invocation of worker.writeData();
}
try {
Thread.currentThread().join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
}