如何协调全球webpack安装和本地装载机
我的package.json
包括webpack和一些加载器:
"devDependencies": { "babel-core": "^5.2.17", "babel-loader": "^5.0.0", "jsx-loader": "^0.13.2", "node-libs-browser": "^0.5.0", "webpack": "^1.9.4" }
当我运行webpack
它不在我的path,所以它不显示为find。 我安装了全局的npm install -g webpack
所以二进制文件会出现在我的path中,但是不能find安装在./node_modules
中需要处理我的依赖关系树的加载模块:
$ webpack --progress --colors --watch 10% 0/1 build modules/usr/local/lib/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:206 throw e; ^ Error: Cannot find module 'jstransform/simple'```
这里的首选解决scheme是什么?
我可以在全球范围内安装我的装载机,但由于交叉项目问题,我不喜欢这样
我可以尝试从node_modules运行webpack(不知道怎么老实,把它添加到$PATH
为每个项目?)
或者我可以尝试给我的全球webpack访问我的node_modules文件夹,这也似乎hacky。
我做错了什么,还是有更好的社区认可的方式来解决这个常见的问题?
我有一个名为“ pipe理每个项目的口译员”的博客文章和详细介绍我的方法的PATH 。 我将在这里总结一下你的一些关键问题。
这里的首选解决scheme是什么?
从来没有(真的,从字面上从不)使用npm -g
。 只需在您的项目中正常安装。 使用你的shell来适当地设置PATH。 我使用zsh自动执行此操作,详细信息请参见上面的博客文章,如果我使用./node_modules/.bin
其放入项目中,它将自动放置在PATH中。
还有其他方法可以工作,包括alias webpack="./node_modules/.bin/webpack"
等等。 但是,只要拥抱改变你的道路,你就会拥有最和谐的长期经验。 一个多项目开发人员的需求不符合旧学校unix所有生活在/ bin或/ usr /斌。
- 如果您使用npm脚本(
package.json
的“脚本”键),则在这些脚本中,npm./node_modules/.bin
在您的PATH中自动包含./node_modules/.bin
,因此您只需运行命令即可find它们。 因此,使用npm脚本,如果您使用shell脚本,那么只需执行export PATH="$PWD/node_modules/.bin:$PATH"
。
任何在您的依赖项中定义的包附带的二进制文件都应该放在./node_modules/.bin
下,所以您应该可以访问它们,例如: ./node_modules/.bin/webpack
。
或者,你可以在你的package.json
定义一个脚本,这个脚本可以让你像npm run webpack
那样npm run webpack
一个别名。