Preface
Introduction
- What Will You Learn
- How Is the Book Organized
- Who Is the Book For
- Book Versioning
- Getting Support
- Additional Material
- Acknowledgments
- IPackaging
1.Where to Start Packaging
- 1.1To Consume Packages or to Develop Them
- 1.2Use an Existing Package
- 1.3Enhance an Existing Package
- 1.4Take Over an Existing Package
- 1.5Fork an Existing Package
- 1.6Develop Your Own Package
- 1.7Consumption Workflow
- 1.8Using Private Packages
- 1.9Understanding npm Lookup
- 1.10Conclusion
2.Anatomy of a Package
- 2.1Understanding package.json
- 2.2What Files to Publish
- 2.3Conclusion
3.Publishing Packages
- 3.1Understanding SemVer
- 3.2Increasing a Version
- 3.3Publishing a Pre-Release Version
- 3.4Deprecating, Unpublishing, and Renaming Packages
- 3.5Sharing Authorship
- 3.6Conclusion
4.Building Packages
- 4.1Communicating Where Code Should Work
- 4.2Compiling to Support Specific Environments
- 4.3Generating a Build on
postinstall - 4.4Configuring Babel for Tree Shaking
- 4.5Using Other Languages Than JavaScript
- 4.6Cross-Platform Concerns
- 4.7Conclusion
5.Standalone Builds
- 5.1How Bundlers Work
- 5.2Universal Module Definition (UMD)
- 5.3Generating a Bundle Using Microbundle
- 5.4Conclusion
6.Managing Dependencies
- 6.1Types of Dependencies
- 6.2Keeping Dependencies Updated
- 6.3Understanding Version Ranges
- 6.4Locking Versions
- 6.5Conclusion
- IICode Quality
7.Linting
- 7.1Why to Lint
- 7.2Linting JavaScript With ESLint
- 7.3Linting TypeScript With TSLint
- 7.4Linting CSS With Stylelint
- 7.5Conclusion
8.Code Formatting
- 8.1Achieving Code Consistency
- 8.2Configuring IDEs and Editors With EditorConfig
- 8.3Formatting Code With Prettier
- 8.4Formatting CSS With Stylelint
- 8.5Conclusion
9.Typing
- 9.1The Value of Typing
- 9.2Flow
- 9.3TypeScript
- 9.4The Benefits of Flow and TypeScript
- 9.5Type Definitions
- 9.6Challenges of Typing
- 9.7Conclusion
10.Testing
- 10.1What to Verify With Testing
- 10.2Develop the Right System the Right Way
- 10.3How Much to Test
- 10.4How to Test Old Projects Without Tests
- 10.5Types of Testing
- 10.6Conclusion
- IIIInfrastructure
11.Processes
- 11.1How to Track Issues
- 11.2How to Manage Pull Requests
- 11.3How to Design a Development Process
- 11.4How to Support Users
- 11.5Conclusion
12.Continuous Integration
- 12.1Setting up Travis CI
- 12.2Conclusion
13.Automation
- 13.1Git Commit Messages
- 13.2Semantic Release
- 13.3Git Hooks
- 13.4Automating Linting With lint-staged
- 13.5Automating Releases
- 13.6gh-lint
- 13.7Danger
- 13.8Configuration Automation
- 13.9Bots
- 13.10Conclusion
- IVDocumentation
14.README
- 14.1What a README Should Contain
- 14.2Automating README
- 14.3Testing Examples
- 14.4Conclusion
15.Change Logs
- 15.1Why Not Commit Log
- 15.2What Is a Good Change Log
- 15.3Conclusion
16.Site
- 16.1How to Set up a Site
- 16.2Interactive Examples and Demos
- 16.3Hosting
- 16.4Deployment
- 16.5Domain Names
- 16.6Search
- 16.7Comments
- 16.8Testing
- 16.9Conclusion
17.API Documentation
- 17.1Documenting APIs in Code
- 17.2Generating Documentation
18.Other Types of Documentation
- 18.1Contribution Guidelines
- 18.2Code of Conduct
- 18.3Issue and Pull Request Templates
19.Linting and Formatting
- 19.1Linting Markdown With Textlint and Proselint
- 19.2Formatting Markdown With Prettier
- 19.3Conclusion
- VFuture
20.Longevity
- 20.1Who Is Going to Develop the Project
- 20.2Who Is Going to Pay for the Development
- 20.3Who Is Going to Make Sure the Project Stays on Track
- 20.4What Happens If Developers Disappear From the Project
- 20.5How to Attract People to the Project
- 20.6How to Keep Track of Everything
- 20.7How to Maintain a Popular Project
- 20.8Conclusion
21.Marketing
- 21.1Marketing Approaches
- 21.2Technical Marketing
- 21.3Content Marketing
- 21.4Word of Mouth
- 21.5Conclusion
- Appendices
Managing Packages Using a Monorepo
- Monorepos - What Are They
- Managing Separate Repositories
- Conclusion
Customizing ESLint
- Speeding up ESLint Execution
- Skipping ESLint Rules
- Setting Environment
- Writing ESLint Plugins
- ESLint Resources
- Conclusion