尽管已经在dependency
与devDependency
上写了所有内容,但我仍然感到困惑的是如何继续npm start
工作之前“构建时间”步骤所需的模块
在我的项目中,必须在gulp build
工作之前致电npm start
。构建步骤中的活动示例包括转换和捆绑。 official docs特别指出不在依赖项部分中包含转换器,而是在devDependencies部分中。其他最佳实践建议自动生成的代码应该保持在git / modules之外。但是,把这些放在一起,我不明白该做什么:有人无法下载和运行我的模块而不进行转换和构建,如果没有transpiler / bundler / etc,这些步骤就无法完成。在依赖项部分。 (否则“跑步”被认为是“发展”?)
如何针对这种情况正确构建节点项目?
答案 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。