Laravel:"dependencies" 和 "devDependencies" 中应该有哪些 npm 包?
Laravel: Which npm packages should be in "dependencies" vs "devDependencies"?
在 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"
}
}
我认为在生产模式下也需要像 vue.js 这样的包,所以我会将它们移至依赖项而不是 devDependencies。
如果您使用 elixir
,则所有这些都是 devDependencies
:
首先,您在生产中不需要 elixir
,因为它只是 gulp
的包装器,希望您能在开发机器上编译您的资产并上传它们。
所有其他 npm javascript 库都可以用 elixir
编译,因此不需要在生产机器上安装它们。默认情况下 elixir
使用 webpack
将 resources\assets\js\app.js
编译成 public\js\app.js
,您需要将其作为 script
包含在您的网页中。
如果您看一下:resources\assets\js\bootstrap.js
,您会看到 laravel
默认添加的包(例如 vue
、bootstrap
和 jQuery
), 因此,例如,如果您想将 dropzone
添加到您的项目中,您只需将其添加到 bootstrap.js
中,如下所示:
require('dropzone');
现在可以将 dropzone
编译为 public\js\app.js
,从而使 dropzone
也成为 devDependency
。
此外,在使用 Laravel Mix(它是 Webpack 的包装器)的较新版本的 Laravel 中,您的所有依赖项都可以在 devDependencies
.
下
Webpack 将所有内容编译成单个文件 (/js/app.js
) 或多个文件,例如,如果您使用 extract
方法构建文件 (/js/app.js
, /js/app.js
, /js/manifest.js
).这些是您的浏览器执行 JavaScript 代码所需的唯一文件;对于 Webpack 构建它们来说,找到 devDependencies
.
下的所有依赖项就足够了
在 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"
}
}
我认为在生产模式下也需要像 vue.js 这样的包,所以我会将它们移至依赖项而不是 devDependencies。
如果您使用 elixir
,则所有这些都是 devDependencies
:
首先,您在生产中不需要 elixir
,因为它只是 gulp
的包装器,希望您能在开发机器上编译您的资产并上传它们。
所有其他 npm javascript 库都可以用 elixir
编译,因此不需要在生产机器上安装它们。默认情况下 elixir
使用 webpack
将 resources\assets\js\app.js
编译成 public\js\app.js
,您需要将其作为 script
包含在您的网页中。
如果您看一下:resources\assets\js\bootstrap.js
,您会看到 laravel
默认添加的包(例如 vue
、bootstrap
和 jQuery
), 因此,例如,如果您想将 dropzone
添加到您的项目中,您只需将其添加到 bootstrap.js
中,如下所示:
require('dropzone');
现在可以将 dropzone
编译为 public\js\app.js
,从而使 dropzone
也成为 devDependency
。
此外,在使用 Laravel Mix(它是 Webpack 的包装器)的较新版本的 Laravel 中,您的所有依赖项都可以在 devDependencies
.
Webpack 将所有内容编译成单个文件 (/js/app.js
) 或多个文件,例如,如果您使用 extract
方法构建文件 (/js/app.js
, /js/app.js
, /js/manifest.js
).这些是您的浏览器执行 JavaScript 代码所需的唯一文件;对于 Webpack 构建它们来说,找到 devDependencies
.