如何调和全局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时,它不在我的路径中,因此未发现。我将其安装在全球 npm install -g webpack上,以便二进制出现在我的路径中,但是它找不到安装在./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'```

这里首选的解决方案是什么?

我可以在全球安装装载机,但是由于交叉项目问题,我不喜欢它

我可以尝试从node_modules运行WebPack(不确定如何诚实,将其添加到每个项目中的$PATH?)

,或者我可以尝试使我的Node_modules文件夹的全局webpack访问,这似乎也很黑。

我做错了什么,还是在这个可能的常见问题上有更好的社区批准的方式?

我有一篇博客文章,名为"管理人均口译员",以及详细介绍我的方法的路径。我在这里总结以解决您的一些关键问题。

这里的首选解决方案是什么?

从不(实际上,从来没有)使用npm -g。只需在项目中正常安装即可。使用外壳适当设置路径。我使用ZSH自动执行此操作,如上面的博客文章中所详细介绍的,因此,如果我用./node_modules/.bin cd进入项目,它会自动放在我的路径上。

还有其他工作方式,包括制作诸如alias webpack="./node_modules/.bin/webpack"之类的别名等。但是,实际上只是拥抱改变自己的道路,您将拥有最和谐的长期经验。多项目开发人员的需求并未满足旧学校Unix的需求。

  • 如果您使用NPM脚本(package.json中的"脚本"键),则在这些脚本期间,NPM自动包含./node_modules/.bin,以便您可以只运行命令,然后找到它们。因此,使用NPM脚本,如果您使用Shell脚本,这是一个简单的export PATH="$PWD/node_modules/.bin:$PATH"

依赖关系中定义的包裹的任何二进制文件都应在./node_modules/.bin下放置,因此您应该能够在此处访问,即:./node_modules/.bin/webpack

另外,您可以在package.json内定义脚本,这将使您可以运行npm run webpack作为别名。

最新更新