НПМ и Bower, так и Browserify и залпом и хрюкать и Webpack
я пытаюсь обобщить свои знания о самых популярных менеджеров пакета JavaScript, пакетов и задач бегунов. Пожалуйста, поправьте меня, если я ошибаюсь:
-
npm
&bower
менеджеры пакетов. Они просто загружают зависимости и не знают, как самостоятельно строить проекты. То, что они знают, называетсяwebpack
/gulp
/grunt
после загрузки всех зависимостей. -
bower
какnpm
, но строит сплющенные деревья зависимостей (в отличие отnpm
Что делать это рекурсивно). Смыслnpm
извлекает зависимости для каждой зависимости (может извлекать то же самое несколько раз), в то время какbower
ожидает, что вы вручную включите суб-зависимости. Иногдаbower
иnpm
используются вместе для front-end и back-end соответственно (так как каждый мегабайт может иметь значение на front-end). -
grunt
иgulp
являются бегунами задач для автоматизации всего, что может быть автоматизировано (т. е. компилировать CSS/Sass, оптимизировать изображения, сделать bundle и minify / transpile его). -
grunt
иgulp
(какmaven
иgradle
или настройки и код). Grunt основан на настройке отдельных независимых задач, каждая задача открывает/обрабатывает / закрывает файл. Gulp требует меньшего количества кода и основан на потоках узлов, что позволяет ему создавать цепочки трубопроводов (без повторного открытия того же файла) и делает его быстрее. -
webpack
(webpack-dev-server
) - для меня это бегун задачи с горячей перезагрузкой изменений, которая позволяет вам забыть обо всех наблюдателях JS/CSS. -
npm
/bower
+ плагины могут заменить бегуны задач. Их способности часто пересекаются, поэтому есть разные последствия, если вам нужно использоватьgulp
/grunt
надnpm
+ Плагины. Но бегуны задач определенно лучше подходят для сложных задач (например, "на каждой сборке создайте пакет, транспилируйте из ES6 в ES5, запустите его на всех эмуляторах браузеров, сделайте скриншоты и разверните в dropbox через ftp"). -
browserify
позволяет упаковывать модули узлов для браузеров.browserify
vsnode
' srequire
на самом деле AMD против CommonJS.
вопросы:
-
что это
webpack
&webpack-dev-server
? официальная документация говорит, что это модуль bundler, но для меня это просто бегун задачи. какая разница? -
где бы вы использовать
browserify
? Не можем ли мы сделать то же самое с node / ES6 импорт? - когда вы используете
gulp
/grunt
надnpm
+ Плагины? - пожалуйста, приведите примеры, когда вам нужно использовать комбинацию
9 ответов
Webpack и Browserify
Webpack и Browserify делают почти ту же работу, что и обработка кода для использования в целевой среде (в основном браузер, хотя вы можете ориентироваться на другие среды, такие как Node). Результатом такой обработки является один или несколько Пучков - собранные сценарии, подходящие для целевой среды.
например, предположим, вы написали код ES6, разделенный на модули, и хотите иметь возможность запускать его в браузер. Если эти модули являются узловыми модулями, браузер не поймет их, поскольку они существуют только в Узловой среде. Модули ES6 также не будут работать в старых браузерах, таких как IE11. Кроме того, вы могли бы использовать экспериментальные языковые функции (ES next proposals), которые браузеры еще не реализуют, поэтому запуск такого скрипта просто приведет к ошибкам. Такие инструменты, как Webpack и Browserify решают эти проблемы с помощью перевод такого кода в браузер форм способен выполнить. Кроме того, они сделать возможным применение огромного разнообразия оптимизаций на этих связках.
однако Webpack и Browserify отличаются во многом, Webpack предлагает множество инструментов по умолчанию (например, разделение кода), в то время как Browserify может сделать это только после загрузки плагинов, но использование обоих приводит к очень похожим результатам. Это сводится к личным предпочтениям (Webpack модными). Кстати, Webpack не является бегуном задач, это просто процессор ваших файлов (он обрабатывает их так называемыми загрузчики и плагины), и он может быть запущен (среди других способов) бегуном задач.
Webpack Dev Server
Webpack Dev Server предоставляет аналогичное решение Browsersync-сервер разработки, где вы можете развернуть приложение быстро, как вы работаете над ним, и проверить ход разработки сразу с dev server автоматически обновляет браузер на изменения кода или даже распространение измененного кода в браузер без перезагрузки с так называемым горячим модулем замена.
бегуны задач против сценариев NPM
я использовал Gulp для его краткости и легкого написания задач, но позже узнал, что мне не нужно ни глотать, ни хрюкать вообще. Все, что мне когда-либо было нужно, можно было сделать с помощью сценариев NPM для запуска сторонних инструментов через их API. выбор между сценариями Gulp, Grunt или NPM зависит от вкуса и опыта вашей команды.
пока задачи в глотке или ворчании легки для чтения даже для людей, не так хорошо знакомых с JS, это еще один инструмент, требующий и изучающий, и я лично предпочитаю сужать свои зависимости и упрощать вещи. С другой стороны, замена этих задач комбинацией сценариев NPM и (возможно, JS) скриптов, которые запускают эти сторонние инструменты (например. Настройка и запуск скрипта узла rimraf для целей очистки) может быть более сложным. Но в большинстве случаев, эти три равны с точки зрения результаты.
примеры
что касается примеров, я предлагаю вам взглянуть на эту проект React starter, который показывает вам хорошую комбинацию сценариев NPM и JS, охватывающих весь процесс сборки и развертывания. Вы можете найти эти сценарии NPM в пакете.json в корневой папке, в свойстве с именем scripts
. Там вы в основном столкнетесь с командами, как babel-node tools/run start
. Babel-node-это инструмент CLI (не предназначен для использования в производстве), который сначала компилирует файл ES6 tools/run
(run.JS файл, расположенный в инструменты) - в основном утилита runner. Этот бегун принимает функцию в качестве аргумента и выполняет ее, что в данном случае является start
- другая утилита (start.js) отвечает за объединение исходных файлов (как клиент, так и сервер) и запуск сервера приложений и разработки (сервер dev, вероятно, будет либо сервером webpack Dev, либо Browsersync).
говоря точнее, начать.js создает как клиент, так и серверные пакеты, запускает express server и после успешного запуска Inits Browser-sync, который на момент написания выглядел так (см. проект react starter для новейшего кодекса).
const bs = Browsersync.create();
bs.init({
...(DEBUG ? {} : { notify: false, ui: false }),
proxy: {
target: host,
middleware: [wpMiddleware, ...hotMiddlewares],
},
// no need to watch '*.js' here, webpack will take care of it for us,
// including full page reloads if HMR won't work
files: ['build/content/**/*.*'],
}, resolve)
и proxy.target
, где они устанавливают адрес сервера, который они хотят прокси, который может быть http://localhost:3000, и Browsersync запускает сервер, прослушивающий http://localhost:3001, где созданные активы служенный с автоматическим обнаружением изменения и горячей заменой модуля. Как вы можете видеть, есть еще одно свойство конфигурации files
с отдельными файлами или шаблонами браузер-синхронизация наблюдает за изменениями и перезагружает браузер, если некоторые происходят, но, как говорится в комментарии, Webpack заботится о просмотре источников js сам по себе с HMR, поэтому они сотрудничают там.
теперь у меня нет эквивалентного примера такой конфигурации Grunt или Gulp, но с Gulp (и несколько аналогично с Grunt) вы бы написали отдельные задачи в gulpfile.js like
gulp.task('bundle', function() {
// bundling source files with some gulp plugins like gulp-webpack maybe
});
gulp.task('start', function() {
// starting server and stuff
});
где вы будете делать по существу почти то же самое, что и в starter-kit, на этот раз с task runner, который решает некоторые проблемы для вас, но представляет свои собственные проблемы и некоторые трудности во время обучения использованию, и, как я говорю, Чем больше зависимостей у вас есть, тем больше может пойти не так. И именно поэтому мне нравится избавляться от таких инструментов.
Обновления По Июнь 2018 Года
изучение современного JavaScript сложно, если вы не были там с самого начала. Если вы новичок, не забудьте проверить это отлично написано, чтобы иметь лучший обзор.
https://medium.com/the-node-js-collection/modern-javascript-explained-for-dinosaurs-f695e9747b70
Обновление Июля 2017
недавно я нашел действительно полное руководство от Grab team о том, как подойти к разработке front-end в 2017 году. Вы можете проверить это, как показано ниже.
https://github.com/grab/front-end-guide
я также искал это довольно долгое время, так как существует много инструментов, и каждый из них приносит нам пользу в другом аспекте. Сообщество разделено на такие инструменты, как Browserify, Webpack, jspm, Grunt and Gulp
. Вы также можете услышать о Yeoman or Slush
. Это на самом деле не проблема, это просто запутывает всех, кто пытается понять четкий путь вперед.
в любом случае, я хотел бы внести свой вклад.
1. Менеджер Пакетов
менеджеры пакетов упрощают установку и обновление зависимостей проекта, которые являются такими библиотеками, как:jQuery, Bootstrap
и т. д. - Все, что используется на вашем сайте и не написано вы.
просмотр всех веб-сайтов библиотеки, загрузка и распаковка архивов, копирование файлов в проекты - все это заменяется несколькими командами в терминале.
NPM
означает:Node JS package manager
помогает управлять всеми библиотеками, на которые опирается ваше программное обеспечение. Вы бы определили свои потребности в файле с именемpackage.json
и работатьnpm install
в командной строке... затем BANG, ваши пакеты загружены и готовы использовать. Может использоваться как дляfront-end and back-end
библиотеки.Bower
: для интерфейсного управления пакетами концепция совпадает с NPM. Все ваши библиотеки хранятся в файле с именемbower.json
и затем запуститьbower install
в командной строке.
самая большая разница между
Bower
иNPM
является ли npm вложенным дерево зависимостей, в то время как Bower требует плоского дерева зависимостей как под.цитирую в чем разница между Bower и npm?
project root
[node_modules] // default directory for dependencies
-> dependency A
-> dependency B
[node_modules]
-> dependency A
-> dependency C
[node_modules]
-> dependency B
[node_modules]
-> dependency A
-> dependency D
project root
[bower_components] // default directory for dependencies
-> dependency A
-> dependency B // needs A
-> dependency C // needs B and D
-> dependency D
есть некоторые обновления на
npm 3 Duplication and Deduplication
, пожалуйста, откройте doc для более подробной информации.
Yarn
: новый менеджер пакетов дляJavaScript
опубликовано byFacebook
в последнее время с некоторыми преимуществами по сравнению сNPM
. И с пряжей, вы все еще можете использовать обаNPM
иBower
реестр для получения пакета. Если вы установили пакет раньше,yarn
создает кэшированную копию, которая облегчаетoffline package installs
.jspm
: является менеджером пакетов дляSystemJS
универсальный загрузчик модулей , построен на вершине динамическогоES6
загрузчика модуля. Это не совсем новый менеджер пакетов с собственным набором правил, скорее он работает поверх существующих источников пакетов. "Из коробки" он работает сGitHub
иnpm
. Как и большинствоBower
пакеты основаны наGitHub
, мы можем установить эти пакеты, используяjspm
как хорошо. Он имеет реестр, в котором перечислены большинство часто используемых интерфейсных пакетов для упрощения установки.
увидеть разницу между
Bower
иjspm
: менеджер пакетов: Bower vs jspm
2. Модуль Погрузчик / Комплектация
большинство проектов любого масштаба будут иметь свой код, разделенный между несколькими файлами. Вы можете просто включить каждый файл с индивидуальным тег, <script>
устанавливает новое http-соединение, а для небольших файлов-что является целью модульности – время установления соединения может занять значительно больше времени, чем передача данных. Во время загрузки скриптов содержимое страницы не может быть изменено.
- проблема времени загрузки в значительной степени может быть решена путем объединения группы простых модулей в один файл и его минимизации.
Е. Г
<head>
<title>Wagon</title>
<script src=“build/wagon-bundle.js”></script>
</head>
- представление приходит за счет гибкости однако. Если ваши модули взаимозависимость, это отсутствие гибкости может быть showstopper.
Е. Г
<head>
<title>Skateboard</title>
<script src=“connectors/axle.js”></script>
<script src=“frames/board.js”></script>
<!-- skateboard-wheel and ball-bearing both depend on abstract-rolling-thing -->
<script src=“rolling-things/abstract-rolling-thing.js”></script>
<script src=“rolling-things/wheels/skateboard-wheel.js”></script>
<!-- but if skateboard-wheel also depends on ball-bearing -->
<!-- then having this script tag here could cause a problem -->
<script src=“rolling-things/ball-bearing.js”></script>
<!-- connect wheels to axle and axle to frame -->
<script src=“vehicles/skateboard/our-sk8bd-init.js”></script>
</head>
компьютеры могут сделать это лучше, чем вы можете, и именно поэтому вы должны использовать инструмент для автоматического связывания всего в один файл.
потом мы услышали о RequireJS
, Browserify
, Webpack
и SystemJS
-
RequireJS
: этоJavaScript
загрузчик файлов и модулей. Он оптимизирован для использование в браузере, но его можно использовать в других средах JavaScript, таких какNode
.
например: библиотека mymodule.js
// package/lib is a dependency we require
define(["package/lib"], function (lib) {
// behavior for our module
function foo() {
lib.log( "hello world!" );
}
// export (expose) foo to other modules as foobar
return {
foobar: foo
}
});
на main.js
, мы можем импортировать myModule.js
как зависимость и использовать его.
require(["package/myModule"], function(myModule) {
myModule.foobar();
});
а потом в наш HTML
, мы можем сослаться на использование с RequireJS
.
<script src=“app/require.js” data-main=“main.js” ></script>
подробнее о
CommonJS
иAMD
чтобы получить понимание легко. отношение между CommonJS, AMD и RequireJS?
-
Browserify
: установите, чтобы разрешить использованиеCommonJS
форматированные модули в браузере. Следовательно,Browserify
это не столько загрузчик модулей, сколько модуль bundler:Browserify
полностью инструмент времени сборки, производящий пакет кода, который затем может быть загружен на стороне клиента.
начните с машины сборки, на которой установлен node & npm, и получите пакет:
npm install -g –save-dev browserify
пишите ваши модули в
//entry-point.js
var foo = require('../foo.js');
console.log(foo(4));
и когда счастлив, выполните команду для связки:
browserify entry-point.js -o bundle-name.js
Browserify рекурсивно находит все зависимости от точки входа и собирает их в один файл:
<script src=”bundle-name.js”></script>
-
Webpack
: он связывает все ваши статические активы, включаяJavaScript
, изображения, CSS и многое другое, в один файл. Он также позволяет обрабатывать файлы с помощью различных типов загрузчиков. Вы мог бы написатьJavaScript
СCommonJS
илиAMD
синтаксис модулей. Он атакует проблему сборки в принципиально более интегрированной и самоуверенной манере. ВBrowserify
вы используетеGulp/Grunt
и длинный список преобразований и плагинов для выполнения работы.Webpack
предлагает достаточную мощность из коробки, которая вам обычно не нужнаGrunt
илиGulp
на всех.
основы использования вне простых. Установить Webpack как Browserify:
npm install -g –save-dev webpack
и передать команда точки входа и выходного файла:
webpack ./entry-point.js bundle-name.js
-
SystemJS
: это загрузчик модулей, который можно импортировать модули во время выполнения в любом из популярных форматов используется сегодня (CommonJS, UMD, AMD, ES6
). Он построен на вершинеES6
модуль загрузчика polyfill и достаточно умен, чтобы обнаружить используемый формат и обработать его соответствующим образом.SystemJS
можно также транспилировать код ES6 (с помощьюBabel
илиTraceur
) или другие языки, такие какTypeScript
иCoffeeScript
с помощью плагинов.
хотите знать, что такое
node module
и почему он не хорошо адаптирован к in-browser.еще полезная статья:
почему
jspm
иSystemJS
?одна из главных целей
ES6
модульность сделать его действительно простым чтобы установить и использовать любую библиотеку Javascript из любой точки мира Интернет (Github
,npm
, etc.). Нужны только две вещи:--121-->
- одна команда для установите библиотеку
- одна строка кода для импорта библиотеки и ее использования
поэтому с
jspm
, вы можете сделать это.
- установить библиотеку с помощью команды:
jspm install jquery
- импортируйте библиотеку с одной строкой кода, без необходимости внешней ссылки внутри HTML-файла.
дисплей.js
var $ = require('jquery'); $('body').append("I've imported jQuery!");
затем вы настраиваете эти вещи в
System.config({ ... })
перед импорт модуля. Обычно при запускеjspm init
там будет файл имениconfig.js
для этой цели.чтобы запустить эти скрипты, нам нужно загрузить
system.js
иconfig.js
на странице HTML. После этого мы загрузим
вы можете найти некоторые технические сравнения на npmcompare
сравнение browserify против grunt против gulp против webpack
Как вы можете видеть webpack очень хорошо поддерживается новая версия выходит каждые 4 дня в среднем. Но Gulp, похоже, имеет самое большое сообщество из них всех (с более чем 20k звездами на Github) Ворчание кажется немного заброшенным (по сравнению с другими)
Так что если нужно выбрать один над другим, я бы с Глоток
OK, все они имеют некоторое сходство, они делают то же самое для вас по-разному и похожим образом, я разделяю их на 3 основные группы Как ниже:
1) модуль bundlers
webpack и browserify как популярные, работают как бегуны задач, но с большей гибкостью, также он будет связывать все вместе в качестве настройки, поэтому вы можете указать на результат как пакет.js, например, в одном файле, включая CSS и Javascript, для получения более подробной информации о каждом, посмотрите на детали ниже:
webpack
webpack-это модульный пакет для современных приложений JavaScript. Когда webpack обрабатывает ваше приложение, рекурсивно создает зависимость график, который включает каждый модуль, необходимый вашему приложению, а затем пакеты все эти модули в небольшое количество пакетов-часто только один - для загрузки браузером.
Это невероятно настраиваемый, но для начала вам нужно только поймите четыре основных понятия: вход, выход, загрузчики и плагины.
этот документ призван дать обзор высокого уровня этих концепции, обеспечивая при этом ссылки на подробные концепции конкретных вариант использования.
больше здесь
browserify
Browserify-это инструмент разработки, который позволяет нам писать узел.Яш-стиль модули компиляция для использования в браузере. Как и node, мы пишем наши модули в отдельных файлах, экспортируя внешние методы и свойства с помощью модуля.экспорт и переменные экспорта. Мы можем даже требовать другие модули, использующие функцию require, и если мы опустим относительный путь, который он разрешит модулю в node_modules справочник.
больше здесь
2) Задача бегунов
глоток и хрюканье-задача бегуны, в основном, что они делают, создавая задачи и запускать их, когда вы хотите, например, вы устанавливаете плагин для минимизации CSS, а затем запустить его каждый раз, чтобы сделать минимизации, более подробную информацию о каждом:
залпом
залпом.js-это инструментарий JavaScript с открытым исходным кодом от Fractal Innovations и сообщество с открытым исходным кодом в GitHub, используемое в качестве потоковой сборки система в интерфейсной веб-разработке. Это задача runner построен на Узел.js и узел Менеджер пакетов (npm), используемый для автоматизации трудоемкие и повторяющиеся задачи, связанные с веб-разработкой, такие как минификация, конкатенация, очистки кеша, модульное тестирование, проверка, оптимизация и т. д. gulp использует подход кода над конфигурацией для определите свои задачи и полагается на свои небольшие, одноцелевые плагины для их выполнять. Gulp экосистема имеет 1000 + такие плагины доступны для того чтобы выбрать от.
больше здесь
грунт
Grunt-это бегун задач JavaScript, инструмент, используемый для автоматического выполните часто используемые задачи как minification, компиляция, блок испытание, linting, etc. Он использует интерфейс командной строки для запуска пользовательских задачи, определенные в файле (известном как Gruntfile). Грунт был создан Бен Альман и пишется в узле.js. Он распространяется через npm. В настоящее время существует более пяти тысяч плагинов доступен в Grunt экосистема.
больше здесь
3) менеджеры пакетов
менеджеры пакетов, они управляют плагинами, которые вам нужны в вашем приложении, и устанавливают их для вас через github и т. д. С помощью пакета.json, очень удобно обновлять модули, устанавливать их и делиться своим приложением, более подробную информацию для каждого:
npm
npm-это пакет менеджер для языка программирования JavaScript. Он диспетчер пакетов по умолчанию для среды выполнения JavaScript Узел.js. Он состоит из клиента командной строки, также называемого npm, и онлайн-база данных общедоступных пакетов, называемая реестром npm. Этот доступ к реестру осуществляется через клиента, и доступные пакеты могут быть просматривал и искал через веб-сайт npm.
больше здесь
беседке
Bower может управлять компонентами, которые содержат HTML, CSS, JavaScript, шрифты или даже файлы изображений. Bower не сцепить или сократите код или сделать что-нибудь еще - он просто устанавливает правильные версии пакетов вам нужны и их зависимости. Чтобы начать работу, Bower работает путем извлечения и установки пакетов из повсюду, заботясь об охоте, поиске, загрузке и сохранении вещи, которые ты ищешь. Bower отслеживает эти пакеты в a файл манифеста, беседка.формат JSON.
больше здесь
и самый последний менеджер пакетов, который не должен быть пропущен, он молод и быстр в реальной рабочей среде по сравнению с npm, который я в основном использовал раньше, для переустановки модулей он дважды проверяет папку node_modules, чтобы проверить существование модуля, также кажется, что установка модулей занимает меньше времени:
пряжа
Yarn - менеджер пакетов для ваш код. Это позволяет использовать и поделиться кодом с другими разработчиками со всего мира. Пряжа это быстро, надежно и надежно, так что вам никогда не придется беспокоиться.
Yarn позволяет использовать решения других разработчиков для разных проблемы, облегчающие разработку программного обеспечения. Если вы есть проблемы, вы можете сообщить об ошибках или внести свой вклад обратно, и когда проблема исправлена, вы можете использовать пряжу, чтобы держать все это в курсе.
код общий доступ через что-то, называемое пакетом (иногда упоминается в качестве модуля). Пакет также содержит весь совместно используемый код в виде пакета.JSON-файл, который описывает пакет.
больше здесь
небольшая заметка о npm: npm3 пытается установить зависимости плоским способом
https://docs.npmjs.com/how-npm-works/npm3#npm-v3-dependency-resolution
что такое webpack & webpack-dev-сервер? Официальная документация говорит, что это модульный пакет, но для меня это просто бегун задачи. Какая разница?
webpack-dev-server является живой перезагрузки веб-сервер, который Webpack разработчики используют, чтобы получить немедленную обратную связь, что они делают. Его следует использовать только во время разработки.
этот проект сильно вдохновлен nof5 инструмент модульного тестирования.
Webpack как следует из названия, создаст один упаковкавозраст web. Пакет будет сведен к минимуму и объединен в один файл (мы все еще живем в HTTP 1.1 age). Webpack делает магию объединения ресурсов (JavaScript, CSS, изображения) и инъекции их так:<script src="assets/bundle.js"></script>
.
его также можно назвать модуль bundler потому что он должен понимать модуль зависимости, и как захватить зависимости и связать их вместе.
где бы вы использовали browserify? Не можем ли мы сделать то же самое с импортом node/ES6?
можно использовать Browserify на тех же самых задачах, где вы бы использовали Webpack. – Webpack более компактно, однако.
отметим, что ES6 модуль особенности загрузчика на Webpack2 используете
Yarn-это недавний менеджер пакетов, который, вероятно, заслуживает упоминания. Итак, там:https://yarnpkg.com/
Afaik, он может получать зависимости npm и bower и имеет другие оцененные функции.
StackShare обеспечивает бок о бок (или stack up) из трех инструментов одновременно.
вот это npm против Bower против Browserify и gulp против Webpack против Grunt
на этих страницах вы можете найти следующее:
- количество голосов, полученных каждым из сообщества StackShare
- какие компании используют их в своем стеке технологий
- уровень интереса для каждый со временем
- плюсы для каждого инструмента
Webpack
является bundler. Как Browserfy
Он выглядит в кодовой базе для запросов модулей (require
или import
) и разрешает их рекурсивно. Более того, вы можете настроить Webpack
разрешить не только JavaScript-подобные модули, но CSS, изображения, HTML, буквально все. Что особенно меня возбуждает Webpack
, вы можете комбинировать скомпилированные и динамически загруженные модули в одном приложении. Таким образом, можно получить реальный прирост производительности, особенно по HTTP/1.X. Как именно ты это делаешь? описано с примерами здесь http://dsheiko.com/weblog/state-of-javascript-modules-2017/
В качестве альтернативы для bundler можно подумать о Rollup.js
(https://rollupjs.org/), который оптимизирует код во время компиляции, но удаляет все найденные неиспользуемые куски.
на AMD
, вместо RequireJS
можно пойти с уроженца ES2016 module system
, но загружается с System.js
(https://github.com/systemjs/systemjs)
Кроме Того, Я указал бы, что npm
часто используется в качестве инструмента автоматизации как grunt
или gulp
. Проверьтеhttps://docs.npmjs.com/misc/scripts. Я лично иду сейчас со сценариями npm, избегая только других инструментов автоматизации, хотя в прошлом я был очень в grunt
. С другими инструментами вы должны полагаться на бесчисленные плагины для пакетов, которые часто не хорошо написаны и не активно поддерживаются. npm
знает свои пакеты, поэтому вы вызываете любой из локально установленных пакетов имя типа:
{
"scripts": {
"start": "npm http-server"
},
"devDependencies": {
"http-server": "^0.10.0"
}
}
на самом деле вам, как правило, не нужен плагин, если пакет поддерживает CLI.