Laravel:哪些npm软件包应该在"依赖项"和"devDependencies"中?

Ila*_*ler 8 dependencies npm laravel packages.json

在Laravel 5.3中,package.json文件如下所示:所有包都在devDependencies中.有人可以告诉我生产中还需要哪些包装.我认为除了browsersync之外的所有.

的package.json

{
  "private": true,
  "scripts": {
    "prod": "gulp --production",
    "dev": "gulp watch"
  },
  "devDependencies": {
    "gulp": "^3.9.1", 
    "jquery": "^3.1.0",
    "laravel-elixir": "^6.0.0-9",
    "laravel-elixir-browsersync-official": "^1.0.0",
    "laravel-elixir-vue-2": "^0.2.0",
    "laravel-elixir-webpack-official": "^1.0.2",
    "lodash": "^4.16.2",
    "vue": "^2.0.1",
    "vue-resource": "^1.0.3"
  },
  "dependencies": {
    "dropzone": "^4.3.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

我认为在生产模式中也需要像vue.js这样的软件包,所以我会将它们移动到依赖项而不是devDependencies.

cra*_*g_h 12

所有这些都是devDependencies如果您使用elixir:

首先,您不需要elixir在生产中,因为它只是一个包装器gulp,希望您将在开发机器上编译资源并上传它们.

所有其他npm javascript库都可以编译elixir,因此不需要在生产机器上使用它们.默认情况下,elixir使用webpack编译resources\assets\js\app.jspublic\js\app.js您需要在您的网页为包括script.

如果您看一下:resources\assets\js\bootstrap.js您将看到laravel默认添加的软件包(例如vue,bootstrapjQuery),所以如果您想要添加dropzone到项目中,只需添加它bootstrap.js就像这样:

require('dropzone');

现在将编译dropzonepublic\js\app.js制作dropzonedevDependency也.


Hat*_*tef 5

此外,在使用 Laravel Mix(它是 Webpack 的包装器)的较新版本的 Laravel 中,您的所有依赖项都可以在devDependencies.

Webpack 将所有内容编译为单个文件 ( /js/app.js) 或多个文件,例如,如果您使用该extract方法构建文件 ( /js/app.js, /js/app.js, /js/manifest.js)。这些是浏览器执行 JavaScript 代码所需的唯一文件;对于 Webpack 构建它们,找到devDependencies.