Управляемое чтение
вместе сTypescript
Это становится все более и более популярным, и я начинаю плыть по течению.ts
Восстановите колеса, которые вы использовали раньше. Я некоторое время боролся с инструментом упаковки, даwebpack
ещеgulp
Хорошо. Наконец, я выбралRollup.js
. (Не используетсяRollup
всегда жду с нетерпением)
Затем завершите использованиеRollup
+ Typescript
+ jest
делать колеса.
У меня настроен проект быстрого стартаrollup-starter-ts
:GitHub.com/Как, о, лес/RO…
Rollup.js
Rollup — это сборщик модулей JavaScript, как сказано в его официальной документации:
Rollup is a module bundler for JavaScript which compiles small pieces of code into something larger and more complex, such as a library or application.
И я бы подумал, тогда онwebpack
какие отличия есть? Прочтите документацию, чтобы узнать, что она не поддерживает разделение кода и временной динамический импорт.
Итак, если вам нужно создать веб-приложение, возможно,webpack
было бы лучше, чемRollup
более подходящий. До сих пор я могу интерпретировать это как более сфокусированноеjs
Инструмент для упаковки библиотек.
начать
Установитьrollup
$ npm install --save-dev rollup
После установки давайте сначала напишем файл конфигурацииrollup.config.js
// ./`rollup.config.js`
export default {
input: "./src/main.js",
output: [
{
format: "cjs",
file: "lib/bundle.cjs.js"
},
{
format: "es",
file: "lib/bundle.esm.js"
}
]
};
Давайте попробуем упаковать и создать новуюjs
документ
// ./src/main.js
let version = "0.0.1";
export default () => {
return `this version is ${version}`;
};
существуетpackage.json
Присоединяйся
"scripts": {
"build": "rollup -c"
}
запустить упаковку
$ npm run build
./src/main.js → lib/bundle.cjs.js, lib/bundle.esm.js...
created lib/bundle.cjs.js, lib/bundle.esm.js in 32ms
На данный момент мы успешно упаковали main.js в две версии.ES6
а такжеCommonJS
.
Typescript
Далее мы позволимrollup
Поддержка упаковкиts
добавить зависимости
Установитьtypescript
$ npm install --save-dev rollup-plugin-typescript typescript tslib
Установитьsourcemaps
$ npm install --save-dev rollup-plugin-sourcemaps
Изменить файл конфигурации
существуетrollup
добавить плагин в конфиг
// ./`rollup.config.js`
import typescript from "rollup-plugin-typescript";
import sourceMaps from "rollup-plugin-sourcemaps";
export default {
input: "./src/main.ts",
plugins: [
typescript({
exclude: "node_modules/**",
typescript: require("typescript")
}),
sourceMaps()
],
output: [
{
format: "cjs",
file: "lib/bundle.cjs.js",
sourcemap: true
},
{
format: "es",
file: "lib/bundle.esm.js",
sourcemap: true
}
]
};
использовать машинописный текст
Будуmain.js
файл изменен наmain.ts
let version: string = "0.0.1";
export default (): string => {
return `this version is ${version}`;
};
пакетный файл
$ npm run build
./src/main.ts → lib/bundle.cjs.js, lib/bundle.esm.js...
created lib/bundle.cjs.js, lib/bundle.esm.js in 65ms
На этом мы закончили, и мы можем начать строить колеса сколько душе угодно!
Но поскольку он строит колеса, как может быть отсутствие фреймворков для тестирования?
jest
нам нужно добавитьjest
и сделать так, чтобы он поддерживалts
добавить зависимости
Установитьjest
и этоts
полагаться
$ npm install --save-dev jest ts-jest @types/jest
Добавить файл конфигурации
Добавить кjest
файл конфигурацииjest.config.js
module.exports = {
preset: "ts-jest",
testEnvironment: "node"
};
писать тесты
Добавить кtest
папку и добавить файлыmain.spec.ts
import Main from "../src/main";
test("version is 0.0.1?", () => {
const test = Main;
expect(test()).toBe("this version is 0.0.1");
});
тестовое задание
существуетpackage.json
Присоединяйсяtest
сценарий
"scripts": {
"build": "rollup -c",
"test": "jest --no-cache"
}
выполнить тест
$ npm run test
PASS test/main.spec.ts
√ version is 0.0.1? (6ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 1.739s
Ran all test suites.
Приятно! Теперь, когда наши заслуги завершены, мы можем строить колеса сколько душе угодно!