节点的“gulp build”和依赖与 devDependency

jdo*_*ell 3 node.js npm

dependency尽管在vs.上写了这么多devDependency,我仍然很困惑如何继续处理“构建时间”步骤所需的模块,然后npm start才能工作。

在我的项目中,必须gulp build先调用npm start才能工作。构建步骤中的活动示例包括转译和捆绑。官方文档明确表示不要在依赖项部分中包含转译器,而是在 devDependencies 部分中包含。其他最佳实践建议应将自动生成的代码排除在 git/模块之外。但是,将这些放在一起,我不明白该怎么做:如果没有转译和构建,有人无法下载和运行我的模块,并且如果没有转译器/捆绑器/等,这些步骤就无法完成。在依赖项部分。(否则“运行”就被认为是“开发”?)

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

joh*_*ley 5

在生产模式下运行应用程序不需要的任何内容都应该是 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
Run Code Online (Sandbox Code Playgroud)

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

{
    ... 
    "scripts": {
        "build": "gulp build",
        "start": "NODE_ENV=production node lib/index"
    }
    ...
 }
Run Code Online (Sandbox Code Playgroud)

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