`gulp build`和依赖关系与节点的devDependency

时间:2016-10-18 23:11:18

标签: node.js npm

尽管已经在dependencydevDependency上写了所有内容,但我仍然感到困惑的是如何继续npm start工作之前“构建时间”步骤所需的模块

在我的项目中,必须在gulp build工作之前致电npm start。构建步骤中的活动示例包括转换和捆绑。 official docs特别指出不在依赖项部分中包含转换器,而是在devDependencies部分中。其他最佳实践建议自动生成的代码应该保持在git / modules之外。但是,把这些放在一起,我不明白该做什么:有人无法下载和运行我的模块而不进行转换和构建,如果没有transpiler / bundler / etc,这些步骤就无法完成。在依赖项部分。 (否则“跑步”被认为是“发展”?)

如何针对这种情况正确构建节点项目?

1 个答案:

答案 0 :(得分:3)

在生产模式下运行应用程序不需要的任何内容都应该是devDependency。这将包括您的所有构建工具。

您的gulp build应该在您的自动构建服务器上运行,并生成运行您的应用程序所需的任何内容(例如,转换后的JS或Webpack包)。您的构建脚本应该类似于:

npm install
gulp build 
# or better make it a script in package.json
# npm run build
# remove devDependencies - no longer needed
npm prune --production
npm start

您的package.json将包含以下内容:

{
    ... 
    "scripts": {
        "build": "gulp build",
        "start": "NODE_ENV=production node lib/index"
    }
    ...
 }

在这个人为的例子中,入口点是lib / index。