npm i -g 能全局安装package.json吗?

{
  "name": "gulpe",
  "version": "1.0.0",
  "author": "ning",
  "description": "一键安装gulp打包环境",
  "dependencies": {},
  "devDependencies": {
    "browser-sync": "^2.11.0",
    "clean-css": "^3.4.9",
    "csso": "^1.4.4",
    "del": "^2.2.0",
    "gulp": "^3.9.0",
    "gulp-autoprefixer": "^3.1.0",
    "gulp-cleancss": "^0.2.2",
    "gulp-css-spriter": "^0.3.3",
    "gulp-cssnano": "^2.0.0",
    "gulp-htmlmin": "^1.3.0",
    "gulp-if": "^2.0.0",
    "gulp-imagemin": "^2.4.0",
    "gulp-minify-css": "^1.2.3",
    "gulp-rev": "^6.0.1",
    "gulp-rev-collector": "^1.0.2",
    "gulp-sequence": "^0.4.4",
    "gulp-uglify": "^1.5.1",
    "gulp-uncss": "^1.0.4",
    "gulp-useref": "^3.0.4"
  },
  "license": "MIT",
  "homepage": "https://ningning.pw"
}

一直都是安装到项目目录(npm i -save-dev),随着package.json越来越大。我想安装到全局,但是npm i -g安装的时候并不会把依赖的组件安装到全局,而是把我项目文件夹移动到了npm\node_modules下面。

window环境

阅读 13.4k
4 个回答

直接进入项目根目录,使用

npm install

会解决所有依赖安装

你不能使用 package.json 里列举的依赖进行全局安装,但是这个功能的确有人提出来只不过目前为止还没有要真正实现的迹象。

不过做到这一点并不算太难,写一个简单的脚本读取 package.json 里的依赖然后依次执行 npm install --global xxx 就可以了,所以这对于程序员来说不算是什么难事。

然而你确定真的要这么做吗?对于大多数项目来说,本地安装所需的依赖(而不是全局安装)是有这样做的道理的,就算你全局安装了,对于具体项目来说还是本地安装的依赖会占据更高的优先级。对于不同的项目也可能会依赖不同的版本,全局统一其实并没有什么太大的意义。

一般来说我们都会约束全局安装的模块越少越好,而项目所依赖的模块则尽可能少的去依赖全局安装的,能够完全不依赖为最佳,这样才能让你的项目运行和你的本地环境完全解耦。

给个不一定非常好的解决方式,主要是利用preinstall,postinstall以及alias

设定package.json中的scripts行

"scripts" :{
    "preinstall": "echo \"alias npm='npm -g'\">>~/.bashrc && source ~/.bashrc",
    "postinstall": "cat ~/.bashrc|grep -v npm > ~/.bashrc && source ~/.bashrc"
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏