npm: 如何创建带有正确依赖项的调试和生产版本?

3
我正在构建一个单页应用程序,使用TypeScript和一些其他依赖项(jQuery、immutable、Lodash、React等)。不同的模块通过requirejs进行包含。
我想创建调试和生产版本,其中调试版本应该包含依赖项的调试版本(即非压缩的、带有调试检查(例如React)),而生产版本应该包含依赖项的压缩生产版本。
如何使用npm实现这个目标(请勿使用grunt、gulp等工具)?

在我看来,你不能仅仅使用 npm 来完成这个任务。因为 npm 只会安装包维护者发布的内容。 - t.niese
但是很多时候维护者会发布调试版和生产版。例如在React中,它们的区别不仅仅是代码压缩...哦等等,我来看看他们是怎么做的... - Paul
哦,他们使用grunt.js。但这真的必要吗? - Paul
我非常确定,npmbower等只是用来安装软件包及其依赖项并保持其最新状态的工具。而创建一个 gruntgulp等工作流程来以你想要的方式组合/压缩/修改脚本或文件则取决于你自己。 - t.niese
好的,一个简便的方式是使用 package.json 文件中的 'scripts' 部分... 我想知道的是构建过程如何选择正确的依赖项,我猜想... - Paul
当然,但是你总是需要添加一些额外的逻辑与外部脚本(纯js文件、grunt、gulp等)到npm中,即使它在安装/更新后直接被npm调用,因为npm本身只提供了帮助。你可能可以在不直接调用这些脚本的情况下实现它,但仍然需要它们。 - t.niese
1个回答

1
如果你不想使用任何基于插件的外部构建工具/任务运行器(例如grunt或gulp),你可以仅使用模块的CLI和npm脚本来完成所有事情。请注意,这种方式需要更多关于您的操作系统环境的知识,例如pipes,当然您应该非常熟悉节点本身,因为您可能需要编写一些构建任务的包装器。
NPM脚本支持各种钩子,可用于分离开发和生产流程。例如,preinstall可用于构建开发版本,prepublish用于生产和部署。
Keith Cirkel撰写了一篇非常有用的文章“如何使用npm作为构建工具”。看看吧。

谢谢你的回答。我已经阅读了这篇文章,但我的问题是如何根据我想要构建的内容优雅地使用一个依赖项或另一个依赖项。我认为这是一个常见的问题,npm 应该有一个选项,但也许我错了... - Paul
我认为可以使用标志或 NODE_ENV 来优雅地完成,记住 npm install --production 只安装生产依赖项。 - raidendev
Keith的文章链接损坏了吗? - Macke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接